我希望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);
}
}
任何人都可以帮我解决这个问题吗?
答案 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 a
和hello
之前不想要这些额外的空格,请删除\n
之后的空格。
-e
标志告诉echo转换转义序列。