【C言語】n個の値を sscanf したい
Q&A
Closed
sscanf()
を使用して、もともと個数を決めていないint型の整数を一度に入力 (標準入力) する方法を知りたいです。
誤ったプログラム
#include <stdio.h>
int main(){
char buf[1000];
int n, num[100];
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
for(int i = 0; i < n; i++){
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &num[i]);
}
printf("%d\n", num[2]);
}
上のプログラムは、入力したい数値の個数を変更可能で、数値それぞれを順番に配列 num に入れ、出力結果として num の2番目の要素が表示されるのを期待して作ったものです。例えば下の図で、1行目に個数である 5 、2行目に要素である 2, 4, 7, 6, 3 を入力した時、3番目の要素にあたる 7 を出力するといった感じです。
入力
5
2 4 7 6 3
出力
7
入れたい数字を1つのsscanf()
にまとめれば、いちいちfgets()
を書かなくても1回で処理されます。しかし今回は、予め変数の個数を決めていないので、sscanf()
のフォーマット部分("%d %d %d ...")をどのように書けば良いのか分からず 困っています。
0