【发布时间】:2016-01-24 01:35:00
【问题描述】:
当使用scanf() 获取包含空格的字符串时,它只分配在空格之前给出的输入。就像我输入“hello world”一样。只有“hello”存储在变量中。我知道scanf() 它安静自然。当我使用gets() 时,它工作正常。但是 gcc 报告 gets() 已被弃用。它还警告gets() 是危险的,不应使用。那么没有gets()如何获得带空格的字符串呢?还有其他替代功能吗?
【问题讨论】:
-
char str[256]; fgets(str, sizeof(str), stdin);-- 注意fgets在str的末尾消费和存储\n(假设有空间)。 -
第二个参数是什么?是最大字符数还是所需字符数或其他?
-
char str[256] = {0}; scanf("%255[^\n]%*c", str); -
这是
str中存储的最大字符数,因此,与gets不同,它避免了缓冲区溢出。 -
感谢 Cool Guy 和 BLUEPIXY