c - 在stdin中打印每一行

时间:2016-06-18 02:25:22

标签: c stdin

我希望echo "1 2\n h a\n hello" | ./a.out给我:

1 2
h a
hello

这是我当前的代码,它在一行上打印整个输入1 2\n h a\n hello

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

int main (void)
{
    char buffer[256];

    while (fgets(buffer, sizeof(buffer), stdin)) {
        printf("%s",buffer);
    }
}

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

默认情况下,echo不会转换转义序列,因此"\n"实际上会被发送到您的文件中。见下文:

$ echo "1 2\n h a\n hello"
1 2\n h a\n hello

你可能打算这样做:

echo -e "1 2\n h a\n hello" | ./a.out

将以下内容重定向到a.out:

1 2
 h a
 hello

如果您在h ahello之前不想要这些额外的空格,请删除\n之后的空格。

-e标志告诉echo转换转义序列。