C语言输入一个数后排序写入文件

用记事本创建文件org.txt,往其中写入一组已排好序的整型数列,然后再由键盘输入一个整数,要求按原来排序的规律将它插入数列中,最后将数列仍写入文件org.txt中。
例如:原来整型数列为:3 6 9 11 56 70 100。
若输入65,则输出数列为:3 6 9 11 56 65 70 100。
方法越多越好,谢谢!

参考这里:https://ask.csdn.net/questions/7741049

第二个是我的答案

你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
    int n,a[100],i,l=0;
    FILE *fp;
    if ((fp = fopen("org.txt", "r")) == NULL)
    {
        printf("cannot open file\n");
        return -1;
    }
    while (fscanf(fp,"%d",&n)!=EOF)
    {
        a[l] = n;
        printf("%d ",a[l]);
        l++;
    }
    fclose(fp);
    printf("\n");
    scanf("%d", &n);
    for (i = l; i > 0; i--)
    {
        if (a[i-1]<n)
            break;
        a[i] = a[i-1];
    }
    a[i] = n;
    l++;
    if ((fp = fopen("org.txt", "w")) == NULL)
    {
        printf("cannot open file\n");
        return -1;
    }
    for (i = 0; i < l; i++)
    {
        printf("%d ", a[i]);
        fprintf(fp,"%d ", a[i]);
    }
    fclose(fp);
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

解答如下

img


#include <stdio.h>
#include <stdlib.h>
int t1[]={3,6,9,11,56,70,100};
void write(int len)
{
    FILE *fp;
    fp = fopen("org.txt","a+");
    if(fp == NULL)
    {
         printf("error!");
         return;
    }
    else
    {
        for(int i=0;i<len;i++)
        {
            printf("%d ",t1[i]);
            fprintf(fp,"%d ",t1[i]);
        }
        fprintf(fp,"\n");
        printf("\n");
    }    
}

int main()
{
    int len=sizeof(t1)/sizeof(int);
    write(len);
    int n;
    scanf("%d",&n);
    t1[len]=n;
    for(int i=0;i<len;i++)
    {
        for(int j=0;j<len-i;j++)
        {
            if(t1[j]>t1[j+1])
            {
                int tem=t1[j];
                t1[j]=t1[j+1];
                t1[j+1]=tem;
            }
        }
    }
    write(len+1);
    return 0;
}