在 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 標準的一部分,可能不適用于所有系統。在編寫可移植代碼時,請謹慎使用。