写C语言出现的问题(100分)

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:03:31
scanf("%s",fn);
if ((fp=fopen(fn,"w"))==NULL)
{gotoxy(1,23);
printf("file open error. ");
exit(1);
}
for (i=1;i<=20;i++)
{
for (n=80;n>=1;n--)
if(ed[i][n]!=' ')
break;
for (j=1;j<=n;j++)
fprintf(fp,"%c",ed[i][j]);
fprintf(fp,"%c",'\n');
}
fclose(fp);

这是一个把20行80列的数组写入文件,可是扩充到100行256列写入文件的时候就会出现乱码或好多□□□□□,还会重复写入两三遍,数组里的数没错。
请各位高手想想办法
我说下我的程序,我的程序现在已经大概500多行,全部帖上来有点不现实。所以什么定义的原因不要问我,不会出那种低级的错误。 我定义的数组是char型,大小我是定义ED[102][258] ,数组行列都是从1开始存储,到ED[100][256]结束,多出的数组是为编程需要,数据不存在溢出问题。 扩充是指把ED[22][82]改为ED[102][258],其他程序没问题,只有这一小部分psave()函数无法实现

愿意帮忙的加我好友,我发源程序给你。。

没看懂,但是不知道你是否注意你的数组序列下标从1开始的,一般是从0开始的,所以不知道是不是溢出造成的?

你是否注意到了你定义的数组ed[][]的大小?
至少你要定义到500是吧?
你的程序看来的话,内存也不大,

精度问题,,定义改下吧

char ed[20][80];
for (i=1;i<=20;i++) //数组下标是从0开始的!,越界了就有乱码的
应该改为: for(i=0;i<20;i++)
for(n=80;n>=1;n--) 改为:for(n=79;n>=0;n--)

j也是一样!

把整个程序都发来吧。。。刚测试输出一个258*258的数组都是对的,这贴上来的部分又什么都说明不了

你用百度hi发个消息吧 我看看,不过不能保证可以调试正确