实在是太有挑战性了,运行失败了,呜呜!创建一个文本文件为输入的字符串排序问题 c语言 想到头都快爆了,有没有帮看下的
#include<stdio.h>#include<stdlib.h>
#include<string.h>
void sort(char array[][50],int n);
void explode(char str[],char str2[][50],char c);
int main()
{
FILE *fp;
int k=0,i;
char str[100];
char cl[100];
char str2[30][50];
if((fp=fopen("d:\\cprogram\\123.txt","w"))==NULL)
{ printf("open file default"); exit(0); }
printf("输入几个字符串:");
scanf("%d\n",&k);
gets(str);
fprintf(fp,"%s",str);
printf("输入文件成功\n");
if((fp=fopen("d:\\cprogram\\123.txt","r"))==NULL)
{ printf("open the file default"); exit(0); }
while(fscanf(fp,"%s",cl)>0)
printf("%s",cl);
explode(cl,str2,' ');// 这个函数用来把c转化为二维数组,方便排序
sort(str2,k);//二维数组排序 printf("输出排序好后的字符串:");
for(i=0;i<k;i++)
puts(str2[i]);
fclose(fp);
return 0;}
void sort(char array[][50],int n)
{ char temp[100];
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(array[k],array[j])>0)
k=j;
if(k!=i)
{
strcpy(temp,array[i]);
strcpy(array[i],array[k]);
strcpy(array[k],temp);
}
}
}
void explode(char str1[],char str2[][50],char c)//转化为二维数组,不过正确与否还不确定
{
char *p;
int i=0,j=0;
p=str1;
while(*p)
{ if(*p!=c)
{ str2[i][j+1]=*p; }
else
{ str2[i][j]='\0';//为字符串加结尾符号;
i++;
j=0;
}
p++;
}
str2[i][j]='\0';
}程序出来没有排序就直接跳出了,怎么修改好