文件操作-标准I/O操作--文件结束标识EOF

文件结束标识EOF

  1. EOF是end-of-file的缩写,表示的是文件的结束标志,可以是文件(file), 也可以是标准输入(stdio)。与换行符"\n"不同,换行符是一行的结束标志。以及字符串操作时,用"\0"表示字符串的结束标志。
  2. EOF仅仅是一个宏定义,其值为-1,不是控制字符"\r","\t","\n"等。
  3. EOF的值是-1,原因是文本对应都是ASCII码,0~255,都是正值,不可能有负值。用-1好与之区分。
  4.  读取数据的程序需要在到达文件结尾时停止,当文件位置指针到达文件的末尾或者发生错误时,操作函数,例如getchar(),getc()会返回特殊值EOF。
  5. 因为两种情况都返回EOF,所以为了区分两者的关系,有两个对应的函数,分别是feof()和ferror()。如果最近一次输入调用检测到文件结尾,feof()函数返回一个非零值,否则返回零值。如果发生读写错误,ferror()函数返回一个非零值,否则返回零值。
  6. 标准输入与文件输入不一样,无法事先知道输入流的大小,必须手动输入一个字符,用来标识文件流结尾,Unix使用ctrl+D标识文件结尾。MS-DOS环境下使用字符ctrl+z标识文件的结束。如果以文本模式打开这样的文件,c可以认出这个字符事标识文件结尾的字符,但是,如果是以二进制模式打开这样的文件,只会把ctrl+z当作文件中的一个字符。真正的文件结尾还在后面,也许紧跟着ctrl+z,也许用空字符填充文件以使它的大小为256的倍数
标准输入:
#include <stdio.h>
#include <string.h>
int main(void)
{
	char str[20];
	char c;
	int i=0;
	printf("please input less than 20 characters\n");
	c=getchar();
	while(c!=EOF&&i<20)
	{
		str[i]=c;
		i++;
		c=getchar();
	}
	printf("the size of character array is%d\n",strlen(str));
	printf("All of characters in the array is:%s",str);
	return 0;
}

结果:
键盘输入:hello,world 回车   然后ctrl+d结束标识


文本输入:
#include <stdio.h>
#include <string.h>
int main(void)
{
	char str[20];
	char c;
	int i=0;
        FILE *fp;
	fp=fopen("myfile.txt","r");
	c=getc(fp);
	while(c!=EOF&&i<20)
	{
		str[i]=c;
		i++;
		c=getc(fp);
	}
	printf("the size of character array is%d\n",strlen(str));
	printf("All of characters in the array is:%s\n",str);
	return 0;
}

结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值