【问题标题】:How to take Line input in C language with whitespace如何在 C 语言中使用空格进行行输入
【发布时间】:2021-08-15 14:59:21
【问题描述】:

我正在处理一个小代码,我需要通过 scanf 函数将整行作为输入,我认为有一个格式说明符 "[^\n%*c]" 有人可以告诉我它的语法吗?它是如何工作的?

【问题讨论】:

  • 您显示的格式说明符不完整,甚至不正确。如果您想阅读整行,最好使用fgets,它更简单(并且假设正确的参数不会导致缓冲区溢出)。
  • int result = scanf(" %99[^\n]", string); 其中 99 是字符串大小 -1,它将换行符留在输入缓冲区中。 % 之前的前导空格是消耗前一个空格。 result 是成功转换的次数。尝试吃后续空格通常是不好的做法。
  • 您可以找到“语法及其工作原理”here
  • scanf() 不是适合这项工作的工具。它可以做到,就像锤子可以用来拧螺丝一样:-)

标签: c


【解决方案1】:

最好的方法可能是使用fgets

char str[20];
fgets(str, 20, stdin);
printf("%s", str);

这里没有理由使用scanf。请记住,fgets 也将换行符放入缓冲区。可以这样删除:

str[strcspn(str, "\n")] = 0;

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    int main()
    {
       char str[20];
       scanf("%19[^\n]%*c", str);
       printf("%s\n", str);
     
       return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多