C语言 生成随机数存入文件,读取文件数字的bug

C语言 生成随机数存入文件,读取文件数字的bug

如果心急,可以直接点解决方法

背景介绍

先介绍下背景:

我现在分别生成10000个,30000个,50000个随机数,将其存入txt文件中,分别命名为1w,3w,5w。

函数分别命名为save和load。

image-20210418235549606image-20210418235610238
相应主函数的调用
image-20210418235745115

现在从这个三个文件中读取数字存到三个相应的数组里。

打印出来看数组生成的数字的情况

问题

很奇怪的来了!!!前方高能!!!

当读取1w数据量的文件时,对应的数组前几千个都没有异常值

但一到末尾:(1w数据图)

image-20210418235216247

出现了很奇怪的大数。

当读取3w数据量的文件时,同样如此,不过异常值全是0(3w数据图)

image-20210418235840682

当读取5w数据量的文件时,也一样,异常值也是0,但比3w的少(5w数据图)

image-20210418235932829

第一想法肯定是:“是不是生成数据写入文件的时候出问题了?”

回去查看存储的txt文件,以1w为例

image-20210419000348281

划到最后一看,发现数据并没有问题?!

所以下意识认为问题在load函数那。各种在load函数上的探索性改动都没有解决这个问题

解决方法

突发奇想问题会不会在save函数那里?

对save函数审视了许久,突然想到我打开文件进行写入后,并没有关掉这个文件

于是加上了一行fclose(fp)

image-20210419001733760

再次打印数字

image-20210419001932525

正常了!!!!!!喜大普奔

虽说我也不知道为什么这样能解决问题

但总结一点:打开文件后记得关闭文件!
fclose(文件指针)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值