C语言中EOF小结
2015-05-08 14:08
288 查看
闲暇时候偶尔拿起同事的《征服C指针》进行浏览,发现一个自己以前都没有在意的一个内容“EOF",对书中的内容进行运行,发现自己尽然无法退出程序,非常郁闷,因此详细研究下。
程序片段是如此while((ch = getc(fp)) != EOF){ putchar(ch)}
EOF的定义为#define EOF (-1),getc()返回int类型的值。
1.EOF:在windows下是ctrl+Z,上述情况,运行程序后在新的一行输入ctrl+z,然后点击回车,便可以跳出循环了,哦也。
2.getc()和getchar()的区别。getchar()从标准输入流(stdin)中读取字符。getc()从文件流中读取字符。
原型:int getchar(void);
int getc(FILE *stream);
代码:
#include <stdio.h>
#include <stdlib.h>
void type_one_file(FILE *fp)
{
int ch;
while ((ch = getc(fp)) != EOF)
{
putchar(ch);
}
}
int main(int argc, char **argv)
{
if (argc == 1)
{
type_one_file(stdin);
}
else
{
int i;
FILE *fp;
printf("%d\n",argc);
for (i = 1; i < argc; ++i)
{
printf("%s\n",argv[i]);
fp = fopen(argv[i],"rb");
if (fp == NULL)
{
fprintf(stderr, "%s:%s can not open.\n", argv[0], argv[i]);
exit(0);
}
type_one_file(fp);
fclose(fp);
}
}
return 0;
}
程序片段是如此while((ch = getc(fp)) != EOF){ putchar(ch)}
EOF的定义为#define EOF (-1),getc()返回int类型的值。
1.EOF:在windows下是ctrl+Z,上述情况,运行程序后在新的一行输入ctrl+z,然后点击回车,便可以跳出循环了,哦也。
2.getc()和getchar()的区别。getchar()从标准输入流(stdin)中读取字符。getc()从文件流中读取字符。
原型:int getchar(void);
int getc(FILE *stream);
代码:
#include <stdio.h>
#include <stdlib.h>
void type_one_file(FILE *fp)
{
int ch;
while ((ch = getc(fp)) != EOF)
{
putchar(ch);
}
}
int main(int argc, char **argv)
{
if (argc == 1)
{
type_one_file(stdin);
}
else
{
int i;
FILE *fp;
printf("%d\n",argc);
for (i = 1; i < argc; ++i)
{
printf("%s\n",argv[i]);
fp = fopen(argv[i],"rb");
if (fp == NULL)
{
fprintf(stderr, "%s:%s can not open.\n", argv[0], argv[i]);
exit(0);
}
type_one_file(fp);
fclose(fp);
}
}
return 0;
}
相关文章推荐
- C语言操作符 小结
- C语言scanf()返回值以及EOF
- 黑马程序员——C语言之指针常用方法小结
- C语言-数组小结
- c语言:常量,变量及其存储方式小结
- EOF小结
- C语言中二维数组做参数的使用小结
- c语言中struct小结
- C语言中的各种文件读写方法小结
- C语言再学习 -- EOF、feof函数、ferror函数
- java OJ题目判断输入结束(与C语言的EOF结束等价)
- 2014.3.11-C语言学习小结
- c语言中的EOF到底是什么呀?
- 【我解C语言面试题系列】003 死循环格式问题小结?
- C语言快速幂取模算法小结
- C语言中实现模板函数小结
- 【C语言】【指针相关知识小结】
- 在C语言中对utmp文件进行查找和写入操作的函数小结
- C语言小结
- C语言中EOF的应用