【发布时间】:2016-12-19 09:28:46
【问题描述】:
我正在尝试创建一个简单的类似记事本的程序来输入命令提示符。但是使用 scanf() 函数按“Enter”不能准确到达下一行。
#include<stdio.h>
void main ()
{
char c;
for(;;){
scanf("%c", &c);
if(c == "\n"){
printf("\n");
}
else{
printf("%c", c);
}
}
}
(我知道 scanf() 将新字符留在缓冲区中。我已尽力解决这个问题。在 scanf() 之后使用了 getch() 函数,但我无法使其工作。我必须了解 scanf() 函数的这个问题,所以我想避免使用字符串或其他方法等替代方法)
【问题讨论】:
-
"\n"是一个字符串(包含一个字符),'\n'是一个字符 -
你的意思是说你的编译器没有警告你,或者你选择忽略它?告诉我一些事情,出现在SO中,写一个问题,发布它,等待答案,真的太有趣了吗?
-
@FarhanFuad "什么是指针" 如果这是你的问题,立即去读一本 C 书。不要试图直接写代码。
-
另外出于性能原因,不要使用
scanf来读取字符。将c声明为int,而只声明fgetc。记得检查EOF以及(将变量声明为int起作用)。 -
最后,如果您只想在读取换行符后打印一个换行符,则不需要
if语句。如果c是换行符,打印c将打印一个换行符。