编写一个程序,从 data.txt 文件读取一批无序的数字,按降序排列后再写到新文件 dataNew.txt 文件中。
提示:读取文件 data.txt 数据后存放到一个数组中,然后对数组排序后,创建新文
件 dataNew.txt,并将结果写入文件。
data.txt 的数据格式是什么样的?一个数据一行?还是空格分割?
一个数据一行:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,n,t;
FILE* fp;
int a[100]={0};//假设不到100个数
char tmp[8]={0};
if((fp = fopen("data.txt","r")) == 0)
{
printf("文件打开失败\n");
return 0;
}
n = 0;
while(!feof(fp))
{
for(j=0;j<8;j++) //清空上一次读取的数据
tmp[j] = 0;
fgets(tmp,8,fp); //读取一行
if(tmp[0] == '\n' || tmp[0] == '\r' || tmp[0] == '\0')
continue;
else
a[n++] = atoi(tmp); //将数据保存在数组中
}
fclose(fp);
//排序
for (i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1]=t;
}
}
}
//写入文件
fp = fopen("dataNew.txt","w");
for (i=0;i<n;i++)
{
fprintf(fp,"%d\n",a[i]);
}
fclose(fp);
return 0;
}
参考一下:
/* Note:Your choice is C IDE */
#include "stdio.h"
#include <stdlib.h>
void main()
{
FILE *fp;
char c;
char str[100]={'\0'};
char num[5]={'\0'};
int i=0;
int j=0;
int k=0;
int s=0;
int a[10]={0};
int b;
fp = fopen("d:\\test.txt","r");
c=fgetc(fp);
str[i++]=c;
while(c !=EOF){
c=fgetc(fp);
str[i++]=c;
}
//关闭
fclose(fp);
for(j=0;j<i;j++){
if(str[j]>='0' && str[j]<='9'){
num[k++] = str[j];
}else {
k=0;
a[s++]= atoi(num);
}
}
printf("请输入一个数:");
scanf("%d",&b);
for(i=0;i<s;i++){
if(a[i]<b){
continue;
}else{
j=i;
break;
}
}
for(i=s;i>=j;i--){
a[i]=a[i-1];
}
a[j]=b;
for(i=0;i<=s;i++)
printf("%d\t",a[i]);
}