Scanset无法识别c中的回车,为什么?

时间:2014-09-23 17:49:42

标签: c scanf

我正在尝试将输入录制到带有scanset的回车按钮,即按下输入按钮。(在Windows上等于\ r \ n,对吗?)。现在,如果我在scanf()中写%[^\n]s,但是%[^\r]s不能写入,我的理解也应该有效。那么这里的问题是什么?

#include <stdio.h>

int main()
{
    char str[120];

    scanf("%[^\r]s", str);

    printf("%s",str);
}

1 个答案:

答案 0 :(得分:5)

您正在阅读标准输入。标准输入是 text 输入流。在文本输入流中,行尾由\n字符表示,无论它是否发生&#34;在Windows&#34;或不。除此之外, text 输入流的目的是确保在输入数据到达scanf时,该数据已经被转换为与平台无关的形式。至少排队。 &#34;在Windows&#34; \r\n组合在到达\n时已经被单独scanf替换。通过使用\r\n读取标准Windows输入,您无法看到scanf(除非您使用Unix输入流读取Windows文本文件)。