printf输出不完整
#include <conio.h>#include <stdio.h>
int main()
{
int i=0;
char c;
while(1)
{
c='\0';
while(c!=13 && c!=27)
{
c=getch();
printf("%c\n",c);
}
if(c==27)
break;
i++;
printf("The NO. is %d\n",i);
}
printf("The end\n");
return 0;
}
这是之前在小甲鱼学C的课程里ppt的代码,为什么运行后按下Esc键后输出的是he end,少了个T,怎么解决呀?谢谢(本人用的是devc++编译) 问题出在getch()函数上,它会读取一个字符但不会回显到屏幕上。当你按下 Esc 键时, getch()会读取该键并继续执行下面的代码,然后printf("The end\n");会被执行。但是由于 Esc 键并不会被回显到屏幕上,所以你会看到的输出是 "he end"。解决这个问题的方法是使用getche()函数,它会读取一个字符并将其回显到屏幕上。
你可以将getch()替换为getche() ,然后重新编译运行你的代码。这样当你按下 Esc 键时,你会看到 "The end" 被正确输出。 问题分析
你遇到的问题是在按下 Esc 键后输出 "The end" 时,缺少了一个 'T' 字母。这是因为在使用 getch() 函数获取键盘输入时,它会读取并返回键盘缓冲区中的字符,但不会显示在控制台上。这就导致了你在按下 Esc 键后,最后一个字符 'T' 并没有被显示出来。
解决方法
为了解决这个问题,你可以修改代码,将 printf("%c\n", c); 这行代码移动到 if(c==27) 的条件判断块内部,在按下 Esc 键后再显示字符 'T'。修改后的代码如下:
#include <conio.h>
#include <stdio.h>
int main()
{
int i = 0;
char c;
while (1)
{
c = '\0';
while (c != 13 && c != 27)
{
c = getch();
if (c == 27)
break;
printf("%c\n", c);
}
if (c == 27)
break;
i++;
printf("The NO. is %d\n", i);
}
printf("The end\n");
return 0;
}
通过将 printf("%c\n", c); 移动到 if(c==27) 的条件判断块内部,确保在按下 Esc 键后再显示字符 'T',从而解决了输出不完整的问题。祝你编程顺利! Mike_python小 发表于 2023-11-13 16:18
问题分析
你遇到的问题是在按下 Esc 键后输出 "The end" 时,缺少了一个 'T' 字母。这是因为在使用 getch( ...
成了,谢谢你! isdkz 发表于 2023-11-13 16:15
问题出在getch()函数上,它会读取一个字符但不会回显到屏幕上。当你按下 Esc 键时, getch()会读取该 ...
谢谢回答,不过改了之后还是漏,而且比如按一下a,显示两个a了。不过按照下面朋友的修改就解决了
页:
[1]