【问题标题】:Reading spaces with scanf使用 scanf 读取空间
【发布时间】:2014-12-26 13:15:47
【问题描述】:
printf("Type first name:"); scanf("%[^\n]%*c",msg);
printf("Type last name: "); scanf("%[^\n]%*c",aux2);
....
printf("Type adress:"); scanf("%[^\n]%*c",aux2);
....
printf("Type phone:"); scanf("%[^\n]%*c",aux2);

我想读一些带空格的字符串。 但是这里的scanf没有效果.. 运行后,我得到:“输入名字:输入姓氏:输入地址:输入电话:”) 另外,我在我的代码中使用 scanf("%c",&c)` 来读取一些字符... 这里有什么问题,为什么我无法读取那些字符串?

*已编辑

【问题讨论】:

  • 请解释您的问题
  • 我无法理解你在问什么。
  • 注意:scanf("%[^\n]%*c",aux2); 不读取 "\n"
  • 已编辑。抱歉。 . . . . .

标签: c string scanf fgets


【解决方案1】:

仍然不清楚您的问题是什么(无论如何对我来说),但是如果您想阅读包含空格的一行文本,fgets 可能是最简单的解决方案。

char buf[100];
fgets(buf, sizeof(buf), stdin);

请注意,一旦遇到 \n 字符,fgets 将停止读取,但会将其附加到您的缓冲区中。

【讨论】:

    【解决方案2】:

    当程序执行到达您发布的scanfs 时,输入流(stdin) 中似乎有一个\n 字符(可能来自以前的输入)。

    scanf("%[^\n]%*c",aux2);
    

    如果\nstdin中的下一个字符并且失败,则不会扫描它。要修复它,只需添加一个

    getchar();
    

    就在第一个 scanf 之前。这将从stdin 中吞噬尾随\n

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      相关资源
      最近更新 更多