使用read()从stdin读取\ n

时间:2014-09-18 13:30:39

标签: c newline stdin

我想读取一个来自stdin的字符串,它将包含多行,由\ n' s分隔,但问题是如果我尝试从stdin中读取字符串迭代所有字符,如下所示:

char buff;
while(read(0, &buff, 1) > 0)
     foo(buff);

它正在阅读像#34; hello \ n"拥有字符h-e-l-l-o-\-n而不是最后的新行作为字符。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

'\n'转义序列由编译器解释。在键盘上输入或从文件中读取它不会产生换行符:您实际上从输入中取回两个字符 - 首先是斜杠,然后是小写'n'字符。

如果输入行尾字符,请在键盘上按 Enter ,或在输入文件中添加行尾字符。