c++ 文件的二进制读取 为什么会多一个-1??急!!
#include"iostream.h"#include"stdio.h"#include"string.h"#include"stdlib.h"voidmain(){F...
#include"iostream.h"
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
void main()
{
FILE *fp;
char c;
fp=fopen("b.txt","r");
if(fp==NULL)
{
cout<<"can't open the file\n"<<endl;
exit(1);
}
while(!feof(fp))
{
c=fgetc(fp);
cout<<(int)c<<" ";
}
fclose (fp);
} 展开
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
void main()
{
FILE *fp;
char c;
fp=fopen("b.txt","r");
if(fp==NULL)
{
cout<<"can't open the file\n"<<endl;
exit(1);
}
while(!feof(fp))
{
c=fgetc(fp);
cout<<(int)c<<" ";
}
fclose (fp);
} 展开
4个回答
展开全部
楼主你好!
格式:int fgetc(FILE *stream);
意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。
这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。
EOF:
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
希望我的回答对你有帮助!
格式:int fgetc(FILE *stream);
意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。
这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。
EOF:
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
希望我的回答对你有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
又见feof再fgetc!
执行顺序来说,feof是放在fgetc后面用的不是放在fgetc前面用的。
while(1)
{
c=fgetc(fp);
if (feof(fp)) break;
cout<<(int)c<<" ";
}
执行顺序来说,feof是放在fgetc后面用的不是放在fgetc前面用的。
while(1)
{
c=fgetc(fp);
if (feof(fp)) break;
cout<<(int)c<<" ";
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
增加一个判断语句,如果的文件结束符,就不输出:
while(!feof(fp))
{
c=fgetc(fp);
if(c!=EOF)
cout<<(int)c<<" ";
}
while(!feof(fp))
{
c=fgetc(fp);
if(c!=EOF)
cout<<(int)c<<" ";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件结束标志..EOF = -1 .
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询