c - 如何在 C 中逐行读取输入文本直到 EOF?

标签 c algorithm

<分区>

我想以逐行的方式从输入中读取文本,而不是读取任何以“a”开头的行,然后将剩余的文本存储在数组中。我不确定如何执行此操作,因为我的程序仅终止读取文本的第一行。假设文本是:

hello world \n a hello world \n hello world'

那么我的输出应该是:

hello world \n hello world

char line[1000];
int line_len = 0;
while ((c = getchar()) != '\n'){   
     line[line_len++] = c;
}
return 0;

最佳答案

也许使用 getline 可能更容易:

char *line = NULL;
size_t len = 0;
ssize_t nread;

while ((nread = getline(&line, &len, stdin)) != -1) {
    if (nread == 0 || line[0] != 'a') {
        printf("Got a valid line: %s", line);
    }
}

free(line);

关于c - 如何在 C 中逐行读取输入文本直到 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57966012/

相关文章:

c++ - libevent bufferevent 套接字刷新

algorithm - 如何缩小值,使它们适合最小值和最大值

algorithm - 如何检测加速度计中的脱粒?

java - 从递归方法中删除输入

python - 寻找 8 个元素的最佳可能组合,8 个列表中的每一个

c - 如果在多个系统调用中完成,为什么 TCP 套接字会变慢?

C - 在没有 strcmp 的情况下测试字符串等价性

c - 在 C 中,有没有办法获取网络接口(interface)的 numa 节点信息

c - K&R书的练习1.9

php - 如何衡量哈希算法强度