stdinから任意の数の正の整数値を読み込む(新しい行または空白で区切られた)プログラムを書いて、新しい行の#の数。例:scanfから不定数の変数を読み込む方法(空白または改行で区切られたもの)
Input:
5 4 3 2 1
Output:
#####
####
###
##
#
Input:
16
0
4
12
Output:
################
####
############
Input:
1 1 3
2 1
Output:
#
#
###
##
#
マイコード:
#include <stdio.h>
int main(){
char buffer[1000];
if (fgets(buffer, sizeof(buffer), stdin) != 0){
int i,j,a;
for(i=0; sscanf(buffer+i,"%d%n",&a,&j)!=EOF; i+=j){
while(a-->0){
printf("*");
}
printf("\n");
}
}
return 0;
}
入力が異なる行にある場合、それは最初の2つの例のために完全に正常に動作しますが、私は三番目で何をすべきでしょうか?私のプログラムは、第3の例では "#"のみを出力します。つまり、出力の最初の行だけが読み込まれます。
ループ内で 'scanf("%d "、%x);'はうまく動作します。遭遇した 'fgets'の新しい行が返ってくるとすぐに。あるいは、 'while'ループの中に' fgets'を1行ずつ読み込むこともできます。 – ameyCU
あなたは 'fgets'を複数回呼び出すことができますか? 'fgets'は1行を読み込みます。 – immibis