c - C语言中EOF的使用
问题描述
代码:
#include<stdio.h>
main()
{
int c;
printf("Enter any charachter!: ");
while((c = getchar()) != EOF) {
putchar(c);
printf("%d\n", (c = getchar()) != EOF);
}
}
我试图在 C 中测试 EOF,但我遇到了困难。我想获得 EOF 的值,发现它是-1
.
getchar()
我使用and编写了一个简单的程序putchar().
我添加了程序和输出的屏幕截图。输出对我来说没有任何意义。
如您所见,我正在尝试获取一个字符并使用getchar()
and显示它putchar()
。我正在尝试打印出 while 循环中使用的条件的值。要检查 EOF,我是故意-1
输入的。putchar()
打印出来-1
,然后最后的 printf 语句让我感到困惑。我输入-1
forgetchar()
但1
显示的意思 c 不等于 EOF。但我认为-1
是EOF。
而且我不明白为什么11
还会显示。我正在使用codeblocks
IDE。
请帮我。提前致谢。
解决方案
EOF
不是字符,也不是从流中读取的。它只是指示该流上没有更多输入的返回值。您可以通过在 *nix 或Windows 上EOF
键入来发出信号。CtrlDCtrlZ
推荐阅读
- hyperledger-fabric - 如何解决这个“make configtxgen”错误?
- ruby-on-rails - 如何修复 postgreSQL 12 中的“错误:列 t.relhasoids 不存在”?
- c - 第 1 天编程:C 中的 \n 问题
- c# - 如何修复 CS1503 参数 1:无法从“字符串”转换为“System.Type”?
- javascript - 页面加载时默认展开侧边栏下拉菜单
- c++ - 为 std::string 的某个索引赋值
- google-apps-script - 生成 PDF 时截断的服务器响应
- laravel - 如何在存储在 s3 中的 html 中呈现 Laravel 标签
- laravel - Laravel Mix:如何在继续混合 sass 之前将文件复制到目录
- powershell - powershell错误:找不到路径,因为它不存在