你怎么看到最后一个印刷品?换句话说,EOF需要投入什么?我检查了定义,它说EOF是-1.
如果你输入Ctrl-D,你将看不到任何东西.
#include <stdio.h>
int main() {
int c;
while((c = getchar() != EOF)) {
printf("%d\n", c);
}
printf("%d - at EOF\n", c);
}
Run Code Online (Sandbox Code Playgroud) 我正在阅读C语言程序,并且到目前为止已经理解了所有内容.然而,当我遇到getchar()并且putchar(),我无法理解它们的用途,更具体地说,以下代码的作用.
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)
我理解main()函数,整数的声明c和while循环.然而我对while循环中的条件感到困惑.这个C代码的输入是什么,输出是什么.
对不起,如果这是一个基本而愚蠢的问题,但我只是在寻找一个简单的解释,然后再继续阅读本书并变得更加困惑.
我正在学习C++并试图理解为什么EOF字符(Windows上的Ctrl + Z)如果放在一行的末尾就不会破坏while循环.
我的代码:
int main() {
char ch;
while(cin >> ch) {
cout << ch;
}
}
Run Code Online (Sandbox Code Playgroud)
当我输入^ Z时,循环中断.但是当我输入12 ^ Z时,它没有.为什么?
作为一个小背景,我对C编程语言很陌生,因此一直试图完成第二版Kernighan&Ritchie手册中的一些练习.我确实意识到我可以通过更多地使用标准库来更简洁地处理某些问题,但是我试图尽可能地保持我的有用命令的所有内容与本书保持同步.
如果它有所不同,我正在使用Tiny C编译器(TCC)在Windows XP环境中编译我的源代码,并在XP控制台(cmd.exe)中执行二进制文件.
问题:处理End-of-File (EOF) characters.我已经整理了一个小测试用例来说明问题.该程序似乎处理EOF字符(部分).我将尝试用样本输入/输出来演示问题.
#include <stdio.h>
int main()
{
int character, count;
character = 0;
character = getchar();
for (count = 0; character != EOF; ++count)
{
character = getchar();
}
printf("Count: %d", count);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
示例输入1 :( abcd^Z[enter]其中^ Z/CTRL + Z表示EOF字符,[enter]表示Enter键.)
示例输出1 :( Count: 4等待更多输入或在^ C/^ Z [enter]上正确结束)
样本输入2: abcd^Zefgh
示例输出2 :( Count: 4等待更多输入或在^ C/^ Z [enter]上正确结束)
如两个示例中所述,在启动^ C/^ Z [enter]序列之前不输出字符计数.在启动之前,程序会等待(并确实处理)更多输入.但是,如示例2中所述,当程序遇到初始^ Z时,如果启动^ C/^ Z [enter]序列,它将停止处理该输入行,等待更多输入或返回正确计数.
我无法弄清楚为什么程序只是部分处理EOF字符.在我看来,如果它截断样本2的末尾,它也应该完全脱离循环.任何想法为什么在识别EOF字符时程序不会立即打印当前计数并退出?
我编写了一个程序,它应该计算大小写字母和其他符号,但是当我单击 Enter 然后单击 ^C (EOF) 时,它会计算任何内容。我不知道如何跳过它,希望有人能以某种方式帮助我 <3
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
int uppers = 0, lowers = 0, others = 0;
while((ch = getchar()) != EOF)
{
if(islower(ch))
lowers++;
else if(isupper(ch))
uppers++;
else
others++;
}
printf("\n\nUpper letters - %d Lower letters - %d Others- %d", uppers, lowers, others);
return 0;
}
Run Code Online (Sandbox Code Playgroud) c ×4
eof ×3
c++ ×1
cmd ×1
counter ×1
getchar ×1
input ×1
putchar ×1
while-loop ×1
windows-xp ×1