我试图创建一个简单的类似记事本的程序以在命令提示符下键入。但是不能完全通过使用scanf()函数按“ Enter”键进入下一行。
#include<stdio.h>
void main ()
{
char c;
for(;;){
scanf("%c", &c);
if(c == "\n"){
printf("\n");
}
else{
printf("%c", c);
}
}
}
Run Code Online (Sandbox Code Playgroud)
(我知道scanf()将新的char留在缓冲区中。我已经尽力摆脱了这个问题。比scanf()之后使用了getch()函数,但我无法使其正常工作。我必须了解这个问题使用scanf()函数,因此我想避免使用字符串或其他方法)
好吧,你有点不幸。在C编程的开始阶段,这是一个普遍的问题。在C之间存在巨大的差异'\n'和"n"。第一个是单个字符,因此类型'\n'为char。另一个是字符串,in C中char[]的字符串是s。这意味着实际上"\n" = ['\n', '\0']字符串以'\0'in 结尾C。
另一件事是,它scanf忽略了前导白标,而换行符是白标。如果要获得更多字符,请fgets改用。对于阅读单个字符,scanf仍然可以。
#include<stdio.h>
void main () {
char c;
for(;;){
scanf("%c", &c);
if(c == '\n'){
printf("\n");
} else{
printf("%c", c);
}
}
}
Run Code Online (Sandbox Code Playgroud)