二级考试C++辅导:C++基础(fscanf读出问题)

二级考试C++辅导:C++基础(fscanf读出问题),第1张

二级考试C++辅导:C++基础(fscanf读出问题),第2张

# include
int main()
{
FILE * FP;
int i,k,n;
fp = fopen("yygy.dat "," a+");
if(FP = = NULL)
{
printf("此文件失败!");
退出(1);
}
for(I = 1;I < 6;i++)
{
fprintf(fp," %d ",I);
if(I % 3 = = 0)
{
fprintf(FP," \ n ");
}
}
倒带(FP);
fscanf(fp," %d%d ",&k,& n);
printf("%d %d\n ",k,n);
f close(FP);
}
我想你可能认为这样做的结果是:1 ^ 2
但实际上,你编辑、编译、运行之后,得到的结果是:123 ^ 45。不是这样的吧?没错。这才是让你害怕的。
再比如修改上面的程序:
change if(I % 3 = = 0)
{
fprintf(FP," \ n ");
}
这个评论会有什么结果?结果应该是:12345-43423(这个数字每个人编译运行的时候都不一样,只是垃圾数据)
那么通过这些我们就很容易总结出fscanf函数的问题了。对于孩子来说,只阅读一次以“/n”结尾的一串数字并不困难
。考试。大提示是,如果我们在用fprintf函数输入文件时,输入一个非常大的数字后只有一个“\n”,那么fscanf还是会像上面说的那样读取一串以“\n”结尾的值nan,所以我们先试一试。我们只需要把for(I = 1;I < 6;++)
i < 6在这句话中改为i < 60,而
if(I % 3 = = 0)
{
fprintf(FP," \ n ");
}
或者评论到
。那么,你得到的结果又变了吗?这个值会是一个很大的数字,但不是我们预期的,对吧?因为这里用fscanf读的时候用的格式是%d,也就是一个整数的长度是32位,我们在这里写了60次才这么做。
注意:每次执行新修改的可执行文件时,必须删除原来的yygy.dat。
综上所述:我们在使用fscanf()时,不仅要注意“\n”的位置,还要注意读写文件时使用的格式。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级考试C++辅导:C++基础(fscanf读出问题)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情