C 如何忽略用户输入中的空行?

标签 c

这是我当前的代码:

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/

相关文章:

java - 在 c++/python/java 中内置抽象数据类型

c - c的微网络框架

c - C 中函数返回局部变量错误的地址

c - 返回指向字符串的指针的函数不起作用

c - 以编程方式生成 C Win32 DLL

c++ - 里面的const变量是什么?

c - 如何在程序中打印 Ansii c 扩展代码?

c - 结构体数组的初始化

c - 可以将实际参数定义为 `const int` 但在 header 中将其声明为 `int` 吗?

c - 如果在文件范围内定义了签名缓冲区,为什么 public_key_verify_signature() 会返回错误? (Linux 内核加密)