首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用C从控制台读取一行?

如何用C从控制台读取一行?
EN

Stack Overflow用户
提问于 2018-04-18 04:25:50
回答 2查看 0关注 0票数 0

在C控制台程序中读取完整行的最简单方法输入的文本可能具有可变长度,我们无法对其内容进行任何假设。

EN

回答 2

Stack Overflow用户

发布于 2018-04-18 12:46:31

需要动态内存管理,并使用该fgets函数来读取您的行。但是,似乎无法查看它读取的字符数量。所以你使用fgetc:

代码语言:javascript
复制
char * getline(void) {
    char * line = malloc(100), * linep = line;
    size_t lenmax = 100, len = lenmax;
    int c;

    if(line == NULL)
        return NULL;

    for(;;) {
        c = fgetc(stdin);
        if(c == EOF)
            break;

        if(--len == 0) {
            len = lenmax;
            char * linen = realloc(linep, lenmax *= 2);

            if(linen == NULL) {
                free(linep);
                return NULL;
            }
            line = linen + (line - linep);
            linep = linen;
        }

        if((*line++ = c) == '\n')
            break;
    }
    *line = '\0';
    return linep;
}

注意:切勿使用获取!它不会执行边界检查并可能会溢出缓冲区

票数 0
EN

Stack Overflow用户

发布于 2018-04-18 13:55:25

如果使用的是GNU C库或其他符合POSIX的库,则可以使用该文件流getline()并传递stdin给它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档