1.编程题,从文件 data.txt 输入数据,然后输出到文件 result.txt。
data.txt
123 4 10
21 23 44 8 100
result.txt
123 4
100 8
#include<stdio.h>
#include<stdlib.h>
void sort(int *data,int len);
void savefile(FILE * fp2,int* datas,int len);
int main() {
FILE *fp1,*fp2;
int data[100],i=0,j;
fp1 = fopen("E:\\data.txt","r");
if (!fp1) {
printf("Open file failed!\n");
exit(0);
}
while(!feof(fp1)) {//feof检测流上的文件结束符,其返回值有两种情况:如果遇到文件结束,函数值为非零值,否则函数值为0。
fscanf(fp1,"%d",&data[i]);//依次将每行的数据存储在数组中
i++;
if(fgetc(fp1) == '\n') {//每碰到换行就将这一行数据保存到fp2文件中
savefile(fp2,data,i);
i = 0;
}
}
fclose(fp1);
}
void sort(int *data,int len) {
int i,j,temp;
for(i=0; i<len-1; i++) {
for(j=0; j<len-1-i; j++) {
if(data[j] > data[j+1]) {
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
void savefile(FILE * fp2,int* data,int len) {
int i;
sort(data,len);//对每一行数据进行排序
fp2 = fopen("E:\\result.txt","a+w");
if(fp2 == NULL) {
printf("Open file failed.\n");
exit(0);
}
fprintf(fp2,"%d %d ",data[len-1],data[0]);//输出每行最大和最小的数
fputc('\n',fp2);//换行
fclose(fp2);//关闭文件
}