首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

文件读写追加有关问题

2012-12-15 
文件读写追加问题。#includeiostream#include algorithmusing namespace stdint main(){int a[3][10],

文件读写追加问题。
#include<iostream>
#include <algorithm>
using namespace std;

int main()
{
int a[3][10],i;
FILE * fp;
if((fp=fopen("b.txt","a+"))==NULL) //以读写方式打开文件
cout<<"fopen error!"<<endl;

for(int j=0;j<3;j++) //读文件
for(i=0;i<10;i++)
{
fscanf(fp,"%d",&a[j][i]);
}

for(i=0;i<3;i++)   //排序
sort(a[i],a[i]+10);

for(j=0;j<3;j++)
for(i=0;i<10;i++) //输出到文件末尾
{
printf("%4d",a[j][i]);
fprintf(fp,"%4d",a[j][i]);
}

fclose(fp);

return 0;
}

代码如上示,我的b.txt中有30个数字。目的是读出来之后 以10个为一组排序,然后追加到该文件末尾。


这个是运行结果

但是发现 只能读出和排序没有办法追加的文件末尾,这个是什么原因呢?请大神们指导一下,多谢!
[最优解释]

#include<iostream>
#include <algorithm>
using namespace std;

int main()
{
int a[3][10],i,j;
FILE * fp;
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\b.txt","a+"))==NULL) //以读写方式打开文件
cout<<"fopen error!"<<endl;

for(int j=0;j<3;j++) //读文件
for(i=0;i<10;i++)
{
fscanf(fp,"%d",&a[j][i]);
}

for(i=0;i<3;i++)   //排序
sort(a[i],a[i]+10);

fseek(fp,0,2);
for(j=0;j<3;j++)
{
for(i=0;i<10;i++) //输出到文件末尾
{
printf("%d  ",a[j][i]);
fprintf(fp,"%d  ",a[j][i]);
}
printf("\n");
fprintf(fp,"\n");
}

fclose(fp);
getchar();
return 0;
}

[其他解释]
for(j=0;j<3;j++)
for(i=0;i<10;i++) //输出到文件末尾
{
printf("%4d",a[j][i]);
fprintf(fp,"%4d",a[j][i]);
}

//这段代码前面,你将文件指针指向文件末尾就可以了,使用fseek

[其他解释]
引用:
哦,懂了

就是说我少了移动指针的操作是吧、

可是你最后一个getchar()目的在于什么呢?不太明白、、
VS上的程序 使程序停顿一下 输入一个字符后程序结束
[其他解释]
引用:
引用:哦,懂了

就是说我少了移动指针的操作是吧、

可是你最后一个getchar()目的在于什么呢?不太明白、、VS上的程序 使程序停顿一下 输入一个字符后程序结束


要不 就 Ctrl+F5 
[其他解释]
哦,懂了

就是说我少了移动指针的操作是吧、

可是你最后一个getchar()目的在于什么呢?不太明白、、
[其他解释]
该回复于2012-11-24 15:48:34被管理员删除
[其他解释]
非常感谢,明白了!

热点排行