gpt4 book ai didi

c - 当遇到 EOF 字符时,使用 getchar() 从控制台读取字符直到遇到 EOF 字符的循环不会退出

转载 作者:行者123 更新时间:2023-11-30 18:12:43 32 4
gpt4 key购买 nike

这是从控制台读取字符并以相反顺序打印它们的程序。

#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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com