温馨提示×

如何在Linux中替代gets函数

小樊
95
2024-09-14 02:14:45
栏目: 智能运维
Linux服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在 Linux 中,gets() 函数已被弃用,因为它容易导致缓冲区溢出

  1. 使用 fgets()

fgets() 函数可以从文件流(如标准输入)中读取一行字符串。这是一个更安全的替代方法。

#include<stdio.h>

int main() {
    char buffer[256];

    printf("请输入一行文本:");
    fgets(buffer, sizeof(buffer), stdin);

    printf("你输入的内容是:%s", buffer);
    return 0;
}
  1. 使用 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 标准的一部分,可能不适用于所有系统。在编写可移植代码时,请谨慎使用。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:Linux下gets函数的替代方案有哪些

0