文件读写追加问题。
#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