返回信息流C语言文件的内容不太记得了,就按书里的步骤写,但不知怎的老出错。
就是这个n的取值,从1-999都运行正常,但到1000和1000+的时候,输出的txt就成乱码了。但n改成10000左右就又正常了,郁闷。因为我需要n=100,1000,10000等的数据,所以求教
#include<stdio.h>
#include<stdlib.h>
int main()
{
long i, k;
FILE *fp;
long n = 10000, m = 10000;
long temp = 1;
fp = fopen("c:\\data.txt", "w");
fprintf(fp, "%ld %ld ", n, m);//先在最前输入俩数
for(i = 0; i < n - 1; i++){
fprintf(fp, "%ld ", temp);
k = rand() % 5 + 1;
temp += k;
} //再输入n个 随机数
fprintf(fp, "%ld\n", m);
fclose(fp);
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #73722同步于 2013/9/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
往文件写入数字老出问题
OrigDesigner
2013/9/15镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我在windows下试了,确实如你所说。我找到了问题的解决方法,却不知问题出在哪里,抱歉,如果你知道了,希望告诉我一下。
第一种方法:fprintf(fp, "%ld %ld ", n, m);把"%ld %ld "变成" %ld %ld "或者"\n%ld %ld "
第二种方法:以二进制的方式写文档fp = fopen("c:\\data.txt", "wb");但是这个时候要注意windows里面的回车换行是\r\n,如果不以二进制写文档回车换行直接写\n就可以了。
对于乱码txt,我用UltraEdit查看了里面的二进制内容,内容是没有问题的。问题估计还是出在windows下txt上。
Windows7和XP,TC和Devc++都试过
【 在 tonyjansan 的大作中提到: 】
: 没出现任何问题~出问题的用得都是什么编译器~最好能提供下~
用txt,不打回车没问题的呀,我n设置到1w都可以正常显示的,奇怪的就是当n在中间1000左右时就崩了
【 在 nuanyangyang 的大作中提到: 】
: 楼主用什么文本编辑器看文件的?这么多数字写在一行里,真的没问题吗?文本编辑器不会死掉吗?
谢谢,用第一种方法可以解决了。虽然还是很好奇。。
【 在 guihai 的大作中提到: 】
: 我在windows下试了,确实如你所说。我找到了问题的解决方法,却不知问题出在哪里,抱歉,如果你知道了,希望告诉我一下。
: 第一种方法:fprintf(fp, "%ld %ld ", n, m);把"%ld %ld "变成" %ld %ld "或者"\n%ld %ld "
: 第二种方法:以二进制的方式写文档fp = fopen("c:\\data.txt", "wb");但是这个时候要注意windows里面的回车换行是\r\n,如果不以二进制写文档回车换行直接写\n就可以了。
: ...................
和编译器写文件方式相关~尝试用最新版本的MinGW-gcc编译下看看~TC太古老了~Dev估计你用得也是很古老的版本~
我用VS cl和MinGW-gcc在Win7和Win8下测试用notepad打开都完全没问题的~
【 在 OrigDesigner 的大作中提到: 】
: 谢谢,用第一种方法可以解决了。虽然还是很好奇。。