実現したいこと
https://paiza.jp/works/mondai/stdin/stdin_comma_n/edit?language_uid=c&t=9ecdd71f9dbb19d3069d5b28c63359d9
こちらの問題を解こうとしています。
発生している問題・分からないこと
該当のソースコード
#include <stdio.h> #include <string.h> int main(void){ //int kakunou; char str[1000]; char changeS[10] = ","; //変更する文字を指定 char * point; int num; fgets(str,sizeof(str),stdin); //一行目引数を入力 sscanf(str,"%d", &num); //引数をnumに格納 for(int i=0; i < num; i++){ fgets(str,sizeof(point),stdin); point = strtok(str, changeS); printf("%s\n",point); point = strtok(NULL, changeS); } return 0; }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
引数num回分ループの処理を入れてstrtokで,をNULLにしたのを、printfすることで解けそうというとこまでわかりました。 いろいろ入れ替えたり()の中設定を変えたりしましたが、うまくいっていません。どうした良いか教えて頂けると幸いです。
補足
特になし
リンク先はpaizaのアカウントが無いので見られませんが、何を入力したら何が出力される問題なのでしょうか?
リンク先をクリックしましたが
404 Not Foundが表示されます。
前の方が、言われているように、「何を入力したら何が出力される問題」なのかを提示したほうが回答がつくと思います。
入力データと期待する出力結果のサンプルがあると、なお良いでしょう
最初の画像にあるシェア用 URL を提示されるべきでしょう。
質問者さんがアクセスした時の URL はご自身用のパラメータ付きなのでアクセスできません。
こちらが問題の提示されているURLですね。
https://paiza.jp/works/mondai/stdin/stdin_comma_n
入力例4で試してみると、以下の結果になります。
10
31415926,qqqqqq,abab313,xyz31131,5,6,7,8,9,10
=>
3141592
6
q
13
1131
6
10
10
10
10
以下の部分で sizeof(point) の値(ポインタサイズ)は 8 や 4 になります。根本的に勘違いをされている様です。
char * point;
:
for(int i=0; i < num; i++){
fgets(str,sizeof(point),stdin);
考え直したらそうでした。ありがとうございます。sizeof(str)は試したのですが
1行目の読み込みが3回出力されるようになってしまっていて、理解が足りず、具体的にどうしたらいいかわかっていない状況です。
回答4件
あなたの回答
tips
プレビュー