如何从stdin读取一行,阻塞直到找到换行符?

我试图从命令行的stdin一次读取任意长度的一行。我不知道我是否能够包含GNU readline,并且更喜欢使用库函数。

我阅读的文档表明,getline应该可以工作,但在我的实验中,它不会被阻止。我的示例程序:

#include <stdio.h>
int main()
{
    char *line = NULL;
    if (getline(&line, NULL, stdin) == -1) {
        printf("No line\n");
    } else {
        printf("%s\n", line);
    }
    return 0;
}

产生无线,这使得它不适合接受用户输入。

我该如何做?我知道这应该是微不足道的,但是我还没有想到。

尝试这个补丁

char *line = NULL;
+size_t size;
+if (getline(&line, &size, stdin) == -1) {
-if (getline(&line, 0, stdin) == -1) {
    printf("No line\n");
} else {
http://stackoverflow.com/questions/12252103/how-to-read-a-line-from-stdin-blocking-until-the-newline-is-found

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何从stdin读取一行,阻塞直到找到换行符?