文件读取赋值数组,选择排序,插入,再写入文件。怎样编程?求解

文件data.txt中有一个已排好序的整数序列,main 函数中定义1个有8个元素的一维整型数组a,从data.txt文件中读入数据赋给数组a,然后从键盘输入一个整数,要按原来排序的规律将它插入数组a中,再将插入后数组a中的值写到文件data.txt中。

 

例如:原来文件中的整数依次为4 6 8 41 56 77 102。若将42插入数组中,则插入后文件中的整数序列为4 6 8 41 42 56 77 102。

main函数定义的数组应该为9个元素才行哦。

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
	FILE *fp;
	if((fp = fopen("D:\\test.txt","r")) == NULL)
	{
		printf("文件打开失败。");
		return;
	}
	char ch[100] = {0};
	int data[100] = {0};
	int num = 0;
	char *p = fgets(ch,100,fp);
	if(p != NULL)
	{
		p = strtok(ch, " ");
		while(p)
		{  
			data[num] = atoi(p);
			printf("%d ",data[num]);
			num++;
			p = strtok(NULL, " "); 
		}
	}
	fclose(fp);
	//
	int i,n;
	printf("\n输入需要插入的数据:");
	scanf("%d",&n);
	for(i=0;i<num;i++)
	{
		if(n < data[i])
		{
			for(int j=num-1;j>=i;j--)
			{
				data[j+1] = data[j];
			}
			data[i] = n;
			break;
		}
	}
	if(i==num)
		data[num] = n;
	//
	for(i=0;i<num+1;i++)
		printf("%d ",data[i]);
	//
	fp = fopen("D:\\test.txt","w");
	if(fp != NULL)
	{
		for(i=0;i<num;i++)
			fprintf(fp,"%d ",data[i]);
		fprintf(fp,"%d",data[num]);
		fclose(fp);
	}
}