AaronJ1 2015-06-03 14:00 采纳率: 0%
浏览 2169

关于fseek,fscanf,fprintf的问题

FILE * fp;int i,n;
if((fp=fopen("tmp","w+"))==NULL)
{
return;
}
for(i=1;i<=10;i++)
{
fprintf(fp,"%3d",i);//fprintf(fp,"%d",i);
}
//写入 1 2 3 4 5 6 7 8 9 10
for(i=0;i<10;i++)
{
fseek(fp,i*3L,SEEK_SET);//fseek(fp,i*1L,SEEK_SET);
fscanf(fp,"%d",&n);
printf("%3d",n);
}
printf("\n");
fclose(fp);

当把代码换成注释部分的时候,屏幕显示的数有问题,这是为什么。

  • 写回答

3条回答

  • 知常曰明 2015-06-03 22:02
    关注
    • 其实你现在这样的写法也是有问题的。只不过因为你只写了个位数所以不觉得。
    • 如果你在输出的时候写成%3d的话,那么tmp文件里的内容是 1 2 3 4 5 6 7 8 9 10,每个数之间有空格,所以读的时候不会出错,
    • 如果你在输出的时候写成%d的话,那么tmp文件里的内容是12345678910,中间没有空格
    • 然后你再去读的时候,i=0的时候会读到12345678910;显然这个数都超出了int的范围,所以会报错
    • 你现在的程序,写一个3位数进去。读出来的时候一样会有问题。
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘