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