这是从控制台读取字符并以相反顺序打印它们的程序。
#include<stdio.h>
main()
{
int ch, count = 0;
char a[100];
printf("Enter Charachters\n");
ch = getchar();
while(ch != EOF && count<100)
{
a[count] = ch;
count = count+1;
ch = getchar();
}
printf("\ncount = %d\n",count);
while (count>0)
{
count = count -1 ;
putchar(a[count]);
}
}
我的问题是: 当我们在控制台上输入几个字符后给出 EOF 字符(ctrl+D)时,它不会退出循环。它不会添加到计数变量,但也不会退出循环。仅当 EOF 字符是换行符之后的第一个字符时,才能正确读取并退出循环。 例如,如果示例输入是:
abcdef
abc
Ctrl+D
那么代码可以正常工作,但如果输入是:
abcdef ctrl+D
循环未退出。
告诉我一种方法来实现这一点。
谢谢
最佳答案
ctrl-D 实际上是 EOT(传输结束)。 ctrl-Z 是 EOF(文件结束)。这不是特定于 unix 的,而是 ASCII 的。 unix 库选择将 EOT 解释为字符 I/O 上输入结束信号的一种方式。
关于c - 当遇到 EOF 字符时,使用 getchar() 从控制台读取字符直到遇到 EOF 字符的循环不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32036364/