字符串排序问题-求帮助
在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。
下面是用选择法排序,搞了半天一直找不出哪里出了问题 ,求高手帮忙看看。
#include <stdio.h>
void main()
{
void sort(char a[][10],int );
int i;
char str[10][6];
for(i=0;i<5;i++)
scanf("%s",&str[i]);
sort(str,5);
for(i=0;i<5;i++)
printf("%s\n",str[i]);
}
void sort(char a[][10],int n)
{
int k,i,index;
char t[10]; //
for(k=0;k<n-2;k++){
index=k;
for(i=k+1;i<n-1;i++)
if(strcmp(a[index],a[i])>0){
index=i;
strcpy(t,a[index]);
strcpy(a[index],a[k]);
strcpy(a[k],t);
}
}
}
[解决办法]
scanf("%s",&str[i]);
应改为
rewind(stdin);
scanf("%5s",str[i]);
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
[解决办法]