我正在尝试创建一个简单的类似记事本的程序来输入命令提示符。但是不能通过使用 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() 函数了解这个问题,所以我想避免使用字符串或其他方法等替代方法)
最佳答案
嗯,你有点不幸。这是 C 编程初期的一个流行问题。在 C
中, '\n'
和 "n"
之间存在巨大差异。第一个是单字符,所以 '\n'
的类型是 char
。另一个是字符串,C
中的字符串就是char[]
。这意味着实际上 "\n" = ['\n', '\0']
作为字符串以 '\0'
中的 C
终止。
另一件事是,scanf
忽略前导白色符号,新行是白色符号。如果你想获得更多字符,请改用 fgets
。对于单字符的读取,scanf还是可以的。
这在 this 堆栈溢出主题中有广泛描述。
#include<stdio.h>
void main () {
char c;
for(;;){
scanf("%c", &c);
if(c == '\n'){
printf("\n");
} else{
printf("%c", c);
}
}
}
关于c - 如何使用scanf获取换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916729/