文件分类:文件分为两类,文本文件和二进制文件。文本文件基于字符编码,常见编码有ASCII、UNICODE等等。
文本文件全是由字符构成,ASCII码的取值是从0~255.
#define EOF -1
其中-1不在ASCII码的取值范围中,所以在文本文件中EOF(-1)可作为文件结束的标准。
int main()
{
FILE * fp = fopen("../../d.txt", "r");
if (!fp)
return -1;
char * buf = malloc(sizeof(char) * 1024);
while (feof(fp) != EOF)
{
memset(buf, 0, 1024);
fgets(buf, 1024, fp);
printf("%s", buf);
}
free(buf);
fclose(fp);
}
二进制文件是由值构成,所以-1有可能就是文件内容所以,EOF(-1)不能作为二进制文件结束的标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。
int main()
{
FILE * fp = fopen("../../d.txt", "r");
if (!fp)
return -1;
char * buf = malloc(sizeof(char) * 1024);
while (feof(fp) == 0)
{
memset(buf, 0, 1024);
fgets(buf, 1024, fp);
printf("%s", buf);
}
free(buf);
fclose(fp);
}
注意:feof函数既可用以判断二进制文件又可用以判断文本文件。所以,直接使用feof函数判断所有文件结束标志即可。