我正在尝试将输入录制到带有scanset的回车按钮,即按下输入按钮。(在Windows上等于\ r \ n,对吗?)。现在,如果我在scanf()中写%[^\n]s
,但是%[^\r]s
不能写入,我的理解也应该有效。那么这里的问题是什么?
#include <stdio.h>
int main()
{
char str[120];
scanf("%[^\r]s", str);
printf("%s",str);
}
答案 0 :(得分:5)
您正在阅读标准输入。标准输入是 text 输入流。在文本输入流中,行尾由\n
字符表示,无论它是否发生&#34;在Windows&#34;或不。除此之外, text 输入流的目的是确保在输入数据到达scanf
时,该数据已经被转换为与平台无关的形式。至少排队。 &#34;在Windows&#34; \r\n
组合在到达\n
时已经被单独scanf
替换。通过使用\r\n
读取标准Windows输入,您无法看到scanf
(除非您使用Unix输入流读取Windows文本文件)。