首页 > 解决方案 > 从C中的输入读取多行

问题描述

我正在尝试从控制台输入中读取多行,但我真的不知道该怎么做。我编写了一个只读取第一行的代码并尝试循环它,但我无法弄清楚它的工作方式。欢迎任何帮助。提前致谢。这是代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char* readLine() {
    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 || c == '\n')
            break;

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

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

        *line++ = c;
    }
    *line = '\0';
    return linep;
}

int main() {

    for (int i = 0; i < 2; i++) {
        printf("%s", readLine());
    }
    return 0;
}

如您所见,我只设法循环调用了两次函数,这意味着我将只读取一行两次。

编辑:我找到了一种逐行读取代码的方法,方法是在输入后立即对该行执行所有工作(在输入下一行之前保存我需要的所有内容),并尝试在其 != ' 时停止 while 循环\n',但循环不会停止,而是继续打印 '\n' 字符(我不断得到空行)。有关如何解决此问题的任何帮助?

// Same stuff here

int main() {

    char* temp = readLine();

    while (*temp != '\n') {
        char* temp = readLine();
        printf("%s\n", temp);
    }

    return 0;
}

标签: c

解决方案


推荐阅读