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 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据