鱼C论坛

 找回密码
 立即注册
查看: 664|回复: 7

[已解决]求助!!!文件读写后输出的数据完全不对

[复制链接]
发表于 2020-4-4 21:30:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我试了一下文件读写操作发现输出的数据跟我输入文件的数据完全不一致啊

大概效果是我生成随机数3、2、5,结果程序输出0、151441、3546221

以下是代码,麻烦大佬们帮我看看是什么问题

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. int main()
  5. {
  6.         int i,num[30],ans[30];
  7.         FILE *fp;
  8.        
  9.         for(i=0;i<30;i++)
  10.         num[i]=rand()%100;
  11.        
  12.         if((fp=fopen("input.ifo","wt+"))==NULL)
  13.         {
  14.                 puts("文件打开失败!");
  15.                 exit(0);
  16.         }
  17.        
  18.         for(i=0;i<30;i++)
  19.         {
  20.                 fprintf(fp,"%d\n",num[i]);
  21.         }
  22.        
  23.         for(i=0;i<30;i++)
  24.         {
  25.                 fscanf(fp,"%d\n",&ans[i]);
  26.         }
  27.         for(i=0;i<30;i++)
  28.         printf("%d     %d\n",num[i],ans[i]);
  29.         fclose(fp);
  30.         return 0;
  31. }
复制代码
最佳答案
2020-4-6 22:09:57
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
        int i,num[30],ans[30];
        FILE *fp;
        srand((unsigned int)(time(NULL)));
        for(i=0;i<30;i++)
                        num[i]=rand()%100;
        
        if((fp=fopen("D:\\VC 6.0\\M.txt","wt+"))==NULL)
        {
                puts("文件打开失败!");
                exit(0);
        }
                rewind(fp);
        
        for(i=0;i<30;i++)
        {
                fprintf(fp,"%d\n",num[i]);
        }
        rewind(fp);
        for(i=0;i<30;i++)
        {
                fscanf(fp,"%d\n",&ans[i]);
        }
        for(i=0;i<30;i++)
                        printf("%d       %d\n",num[i],ans[i]);
        fclose(fp);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 21:33:35 | 显示全部楼层
fscanf中不支持\n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 09:57:14 | 显示全部楼层

谢谢!可是我去掉\n了还是不对怎么办啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 10:04:28 | 显示全部楼层
zwhehe 发表于 2020-4-6 09:57
谢谢!可是我去掉\n了还是不对怎么办啊

你写完后指针没有恢复到开头,在用完fprintf后加入一句
  1. rewind(fp);
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-6 14:24:57 | 显示全部楼层
BngThea 发表于 2020-4-6 10:04
你写完后指针没有恢复到开头,在用完fprintf后加入一句

麻烦蓝神了,可我加了rewind还是没有用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 22:09:57 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
        int i,num[30],ans[30];
        FILE *fp;
        srand((unsigned int)(time(NULL)));
        for(i=0;i<30;i++)
                        num[i]=rand()%100;
        
        if((fp=fopen("D:\\VC 6.0\\M.txt","wt+"))==NULL)
        {
                puts("文件打开失败!");
                exit(0);
        }
                rewind(fp);
        
        for(i=0;i<30;i++)
        {
                fprintf(fp,"%d\n",num[i]);
        }
        rewind(fp);
        for(i=0;i<30;i++)
        {
                fscanf(fp,"%d\n",&ans[i]);
        }
        for(i=0;i<30;i++)
                        printf("%d       %d\n",num[i],ans[i]);
        fclose(fp);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-7 09:24:34 | 显示全部楼层
大河之jian 发表于 2020-4-6 22:09
#include
#include
#include

可以了,感谢老铁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 11:48:20 | 显示全部楼层
zwhehe 发表于 2020-4-7 09:24
可以了,感谢老铁

不客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-8 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表