这是我当前的代码:
int num = 0;
char c = '#';
scanf("%d",&num);
do{
for (int i=0;i<num;i++){
printf("%c",c);
}
printf("\n");
}
while (scanf("%d", &num) == 1);
如果用户没有输入任何内容,程序将不会吐出换行符,如何才能做到这一点?
感谢任何帮助,谢谢!
最佳答案
此代码应该适用于您想要执行的操作:
#include <stdio.h>
int main()
{
int num = 0;
char c = '#';
char readLine[50];
while ((fgets(readLine, sizeof readLine, stdin) != NULL) && sscanf(readLine, "%d", &num) == 1)
{
for (int i=0;i<num;i++){
printf("%c",c);
}
printf("\n");
fflush(stdout);
}
return 0;
}
此代码的行为如下:fgets 将读取您在标准流 (stdin) 中输入的任何内容,并将其放入 readLine 数组中。然后,程序将尝试读取 readLine 变量中的数字,并使用 sscanf 函数将其放入 num 变量中。如果读取了数字,程序将执行您在问题中出现的行为(写入 # 字符“num”次),然后返回到循环的开头。如果读取了除数字以外的任何内容,则循环将停止。
关于C 如何忽略用户输入中的空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34981674/