我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码
#include
#include
#include
/*
*
*/
int main() {
int nl,nt,nb;
int c;
printf("\nHello and Welcome :D\nThis is the 'answer' to Ex 1-8 in TCPG\nRemember,to end input,type in %d\n[Press to continue]\n",EOF);
getch();
for(nl = 0,nb = 0,nt = 0;(c = getchar()) != EOF; ) // When getchar is replaced by getche() it goes into the loop but doesnt exit the loop
{
putchar(c);
if(c == '\n')
{
nl++;
}
else if(c == '\t')
{
nt++;
}
else if(c == ' ')
{
nb++;
}
}
printf("\nYou typed in %d blanks, %d tabs and wrote %d lines\n[Press to exit]",nb,nt,nl);
getch();
return (EXIT_SUCCESS);
}
它只是不进入循环!当 getchar() 替换为 getche() 时,它进入循环但不退出:(如果你没猜到,putchar(c);只是为了确认已经进入循环我尝试了 Ctrl + D 和 Ctrl + Z我使用的是 Windows 8谢谢大家:)
编辑:我首先使用了 switch case 结构,但我认为我应该按照这本书去,我刚刚看到它在我输入一点后说 RUN FAILED (退出值 -1,总时间:5s)...有任何想法吗?谢谢大家:)(再次:D)
首先,您不应该使用或 getch/getche,它们不是标准 C。当您在循环中使用 getche 时,您的问题是 MS Windows 上的此函数不处理文件结束控件。
一般来说,第一个 getchar() 调用只有在您按下第一行的 Enter 键后才会返回,因此,如果您期望它立即“进入循环”,那么您就错了。只需继续输入并按 Enter 键即可。
Tôi là một lập trình viên xuất sắc, rất giỏi!