文件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);
}
}