【问题标题】:How to get strings containing space without gets() in C?如何在C中获取包含空格的字符串而没有gets()?
【发布时间】:2016-01-24 01:35:00
【问题描述】:

当使用scanf() 获取包含空格的字符串时,它只分配在空格之前给出的输入。就像我输入“hello world”一样。只有“hello”存储在变量中。我知道scanf() 它安静自然。当我使用gets() 时,它工作正常。但是 gcc 报告 gets() 已被弃用。它还警告gets() 是危险的,不应使用。那么没有gets()如何获得带空格的字符串呢?还有其他替代功能吗?

【问题讨论】:

  • char str[256]; fgets(str, sizeof(str), stdin); -- 注意fgetsstr 的末尾消费和存储\n(假设有空间)。
  • 第二个参数是什么?是最大字符数还是所需字符数或其他?
  • char str[256] = {0}; scanf("%255[^\n]%*c", str);
  • 这是str 中存储的最大字符数,因此,与gets 不同,它避免了缓冲区溢出。
  • 感谢 Cool Guy 和 BLUEPIXY

标签: c string gcc scanf gets


【解决方案1】:

您可以使用char *fgets(char *str, int n, FILE *stream)

要从用户那里获取输入,而不是 FILE* stream,请使用标准输入 stdin

fgets (str, 60, stdin)

【讨论】:

  • 这样我可以从标准输入获得输入吗?
  • @PraveenKumar 是的,你可以
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2013-09-16
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
相关资源
最近更新 更多