/*
功能:读取文件file1.txt的内容比如:
12
34
56
输出到file2.txt
56
34
12
备注:本算法只针对这样数据行的文件内容有效。
日期:2009.12.30
作者:DC
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main(int argc, char **argv)
{
FILE *fp1,*fp2; //两个文件指针
int max = 10; //首次分配的int型的空间大小的个数
int *a; //分配空间首地址赋给a
int *b; //在realloc的时候,b接过指针,方便赋给a
/*分配空间函数malloc在头文件stdlib.h中*/
a = (int *)malloc(max * sizeof(int));
if (a == NULL)
{
printf("overflow while malloc\n");
exit(-1);
}
/*文件标准IO函数在stdio.h中*/
fp1 = fopen("file1.txt", "r");
if (fp1 == NULL)
{
printf("open file1 error:%s\n", strerror(errno));
exit(-1);
}
fp2 = fopen("file2.txt", "w");
if (fp2 == NULL)
{
printf("open file2 error:%s\n", strerror(errno));
exit(-1);
}
/*fscanf对本算法实现相当重要,因为文件中的格式确定,用这个函数很方便*/
int i=0, j=0;
while(fscanf(fp1, "%d", &a[i]) != EOF)
{
i++;j++;
if(i >= max) //当空间不够用时,用realloc函数实现
{
max = 2 * max;
b = (int *) realloc(a, max * sizeof(int));
if (b == NULL)
{
printf("overflow while realloc\n");
exit(-1);
}
a = b;
}
}
/*注意--j,因为最后一个读出来的是结束符'\0',
另外注意a[0]也是有效数据。*/
for (; --j>=0;)
{
fprintf(fp2, "%d\n", a[j]);
}
fclose(fp1);
fclose(fp2);
return 0;
}
读取file1的内容以行为单位倒置输出到file2中
最新推荐文章于 2023-05-06 13:11:20 发布