求高手指点!!!!!!谢啦!!!!
我写了一个小程序,用来实现将一个二维字符数组中的每一个字符串的字符按升序重新排列。要求能初始化输入字符串数组并输出。主函数只能调用一次子函数。写好以后,编译和链接都没有问题,但是运行以后发现只能实现对第一个字符串的排序,其他字符串都变成了乱码。。。这是什么原因啊?求指点!!程序代码:
#include<stdio.h> #include<stdlib.h> #define N 2 #define M 51 int main() { void range(char b[][M]); char a[N][M]; int i; printf("请输入%d个字符串,每个字符串不超过%d个字符(每个字符串以回车键结束):\n",N,M-1); for(i=0;i<N;i++) gets(a[i]); printf("您输入的字符串为:\n"); for(i=0;i<N;i++) { puts(a[i]); } printf("对每个字符串按升序排列:\n"); range(a); printf("排序后的字符串为:\n"); for(i=0;i<N;i++) { puts(a[i]); printf("\n"); } return(0); } void range(char b[][M]) { int m,n,p,sum=0; char c; for(n=0;n<N;n++) { for(m=0;b[n][m]>0;m++) sum+=1; for(p=0;p<sum-1;p++) { for(m=0;m<sum-1-p;m++) if(b[n][m]>b[n][m+1]) { c=b[n][m]; b[n][m]=b[n][m+1]; b[n][m+1]=c; } } } }