在 Linux 中,gets()
函数已被弃用,因为它容易导致缓冲区溢出
- 使用
fgets()
:
fgets()
函数可以从文件流(如标准输入)中读取一行字符串。这是一个更安全的替代方法。
#includeint main() { char buffer[256]; printf("请输入一行文本:"); fgets(buffer, sizeof(buffer), stdin); printf("你输入的内容是:%s", buffer); return 0; }
- 使用
getline()
:
getline()
函数可以动态分配足够的内存来存储输入的行。这需要包含
头文件。
#include#include int main() { char *buffer = NULL; size_t len = 0; ssize_t read; printf("请输入一行文本:"); read = getline(&buffer, &len, stdin); if (read != -1) { printf("你输入的内容是:%s", buffer); } free(buffer); return 0; }
请注意,getline()
函数是 POSIX 标准的一部分,可能不适用于所有系统。在编写可移植代码时,请谨慎使用。