前提・実現したいこと
C言語初心者のため、意味不明なことを言っていたら申し訳ありません。
整数nが与えられて、その後にn個の整数が半角空白区切りで与えられるので、それを与えられた順番に改行区切りで出力したいです。
例:
<入力>
3 23 52 7
<出力>
23
52
7
発生している問題・エラーメッセージ
出力が、1つ目に与えられた整数がn回出てしまいます。
該当のソースコード
C言語
ソースコード
#include <stdio.h>
#include <string.h>
int main(void){
char buf[100];
fgets(buf, sizeof(buf), stdin);
int n;
sscanf(buf, "%d", &n);
char str[10]; fgets(buf, sizeof(buf), stdin); char *tp; for(int i=0; i<n; i++){ sscanf(buf, "%s ", str); tp=strtok(str, " "); printf("%s\n", tp); }
}
試したこと
やろうとしていることとしては、fgetsで入力を読み込んで、まずnの値を設定し、そこからstrtok関数で空白区切りできるかと思ったのでn回繰り返そうとしました。
よくわかっていない点としては、fgetsがどこまで読み込んでいるのか(改行まで?)、sscanfとstrtok関数の使い方についてです。どれが空白まで、改行まで読み込むのか、繰り返し動作を行う必要があるのかなどです。