用C语言编写一个程序

编写一个程序,从 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]);    
}