c - C语言获取int后获取用户字符串

标签 c printf scanf gets

我不明白为什么这段代码不能正常工作:

#include<stdio.h>

    int main()
{
    char string [100];
    int a;
    printf(">");
    scanf("%d", &a);
    printf(">");
    gets(string);
    printf("%s\n", string);
}

这是我必须构建但我不能构建的程序的一小部分 理解为什么在通过 scanf() 函数获取值后, 程序只是跳过或没有正确读取 gets() 的字符串 功能。如果您将代码复制到编译器中并尝试运行,您将 明白我的意思。

最佳答案

%d 说明符不会吃掉换行符(或其他空白)。试试这个:

scanf("%d ", &a);
         ^

那个空格使 scanf 丢弃所有的空白,直到一个非空白。顺便说一下,您的问题与此非常相似 C FAQ .


  • 不要使用 gets,它太糟糕了,甚至不再使用该语言。 使用 fgets 代替
  • 不要相信任何为您的问题建议 fflush(stdin) 的人

关于c - C语言获取int后获取用户字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820217/

相关文章:

arrays - 使用 printf 函数格式化间距 C

c++ - 我怎样才能改进/替换我认为是性能热点的 sprintf?

c - 有没有办法让 scanf 从文件中读取

在没有 strcat 的情况下连接两个字符串

python - 内存中的高效 vector 位数据 "Rotation"/"Rearrangement"[例如在 Python 中,Numpy]

mysql - 来自 C 应用程序和 mysql 控制台的不同 mysql 触发器

c - printf 等待输入

c - open()函数在不同文件权限下的问题

c - 如何从 C 文件中选择要扫描的内容

c - 当我将 scanf 放入 char 类型的 switch case 中时,它会完全跳过它,为什么?