c -如何获得换行符号使用scanf



我正在尝试创建一个简单的类似记事本的程序来输入命令提示符。但是不能通过使用scanf()函数按"Enter"键准确地到达下一行。

#include<stdio.h>
void main ()
{
char c;
for(;;){
        scanf("%c", &c);
   if(c == "n"){
        printf("n");
        }
   else{
        printf("%c", c);
        }
}
}

(我知道scanf()将新字符留在缓冲区中。我已经尽了最大的努力来解决这个问题。使用getch()函数之后比scanf(),但我不能使它工作。我必须理解scanf()函数的这个问题所以我想避免使用string或其他选项

好吧,你有点不幸。这是C编程开始时的一个流行问题。在C中,'n'"n"之间存在巨大差异。第一个是单字,所以'n'的类型为char。另一个是字符串,C中的字符串是char[] s。这意味着实际上"n" = ['n', '']作为字符串以C中的''结束。

另一件事是,scanf忽略前导白色符号,新行是白色符号。如果您想获得更多字符,请使用fgets。对于读取单个字符,scanf仍然可以。

这在本堆栈溢出主题中有广泛的描述。

#include<stdio.h>
void main () {
    char c;
    for(;;){
        scanf("%c", &c);
       if(c == 'n'){
           printf("n");
       } else{
             printf("%c", c);
       }
    }
}

我认为最好使用getch()来实现您想要实现的任何目标。

while(1){
  int i = getch();
  if(i==13) printf("n");
  // [Maybe an else if ladder for different shortcuts/keys...]
  else printf("%c",i);
}

我知道我迟到了,但我希望这个答案能让将来读到它的人受益。

最新更新