
求解C语言:请用记事本创建文件org.txt,往其中写入一组已排好序的整型数列,然后再由键盘输入一个整数,要求按原来排序的规律将它插入数列中,最后将数列仍写入文件org.txt中。
例如:原来整型数列为:3 6 9 11 56 70 100(数据间的分隔符为空格)。
若将65插入数列中,则插入后数列为:3 6 9 11 56 65 70 100。
#include
#include
#include
#define OUTPUT "org.txt"
#define WIDTH 30
main(int argc,char *argv[]){
FILE* fp;
char ch;
int scan_in;
int i,j,k,l;
char c;
char filedata[WIDTH][WIDTH];
char *c_data;
int data_o[WIDTH],data_n[WIDTH];
for(j=0;j<WIDTH;j++){
for(i=0;i<WIDTH;i++){
filedata[j][i] = ';'}
}
//创建org.txt文件,输入数列以空格分隔,以#号结束
if
(( = fpfopen(, OUTPUT"w" ) ) ==NULL) printf{
("FILE OPEN FAIL[OUTPUT] !!!\n");}
elseprintf{
("FILE OPEN PASS[OUTPUT] !!!\n");printf
("Enter the digital sequence, end with # :");=
chgetchar();while
(!=ch'#')fputc{
(,ch)fp;//putchar(ch);=
chgetchar();}
}
fclose
( )fp;//输入一个要插入数据
printf
("input a new digital:");scanf
("%d",& )scan_in ;//再打开org.txt文件 将字符型数据转成整数型 用来与新输入的数据比大小
if
(( = fpfopen(, OUTPUT" r" ) ) ==NULL) printf{
("FILE OPEN FAIL[OUTPUT] !!!\n");}
elseprintf{
("FILE OPEN PASS[OUTPUT] !!!\n");=
i0;=j0;while
(( =c fgetc () fp )!= EOF ) //printf( "---c = %c\n", c ); {
[
filedata]j[]i= ; c[
filedata]j[+i1]= ';' ++;
iif(
==0x20c ) //0x20表示空格 ={ 0
i;++;
j}else
=[{
c_data ] filedata;j//数组指针 []
data_o=jatoi ( ); c_data //atoi将字符串里的数字字符转化为整形数,返回整形值。 //printf("filedata[%d]= %s \n",j,filedata[j]);//printf("data_o[%d]= %d \n",j,data_o[j]);
}
}
fclose
(
) ;fp}//重新排序
//printf("---j = %d\n",j);
for
(
=0k;<=;k++j)kif({
[]scan_in>data_o)k[]{ data_n=k[]data_o;k}else [
]{
data_n=k;whilescan_in(
<=)k[j+{ data_n1k]=[]data_o;k++;k}break ;
}}
//输出新数列到org.txt
if
(
(= fopen fp(,"w" OUTPUT) ) == NULL)printf ({
"FILE OPEN FAIL[OUTPUT] !!!\n");}else
printf({
"FILE OPEN PASS[OUTPUT] !!!\n");}//printf("---k = %d\n",k);
for
(
=0l;<=;l++k)lfprintf({
,"%d"fp,[]data_n)l;fprintf(
,"%c"fp,0x20);}fclose
(
) ;fpreturn0
; }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)