我想要寫一個程序,讀取正整數值從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;
}
它適用於前兩個例子完全正常,但我應該怎麼做的第三個,當輸入是在不同的線路?我的程序只在第三個例子中輸出「#」,這意味着它只讀取輸出的第一行。
內部環路'的scanf( 「%d」,%×);'將很好地工作。只要遇到'fgets'中的新行就會返回。否則,要逐行閱讀,在'while'循環中放置'fgets'。 – ameyCU
你可以多次調用'fgets'? 'fgets'只讀一行。 – immibis