|
发表于 2016-8-28 21:28:49
|
显示全部楼层
- #include <stdio.h>
- #include <string.h>
- void main()
- {
- void paixu(char a[][30],int n);
- void shuchu(char a[][30],int n);
- char b[5][30]={"whit s fox","i am a boy","you are","i am a cat","you are a girl"};
- int x=5;
- paixu(&b[0],5);
- shuchu(&b[0],5);
-
- }
- void paixu(char a[][30],int n)
- {
- char t;
- int i,j;
- //a是一个数组 数组里的元素是char*类型 所以 a[i] 其实是一个char*类型 a[0] 指向"whit s fox"
-
- for (int k = 0;k<n;k++)
- {
- char *p = &a[k][0]; //这样就循环指向 "whit s fox","i am a boy","you are","i am a cat","you are a girl"了
- int len = strlen(p);
- for(i=0;i<len-1;i++)
- for(j=i+1;j<len;j++)
- if(strcmp(&a[k][i],&a[k][j])>0)
- {
- t=p[i];p[i]=p[j];p[j]=t;
- }
- }
- }
- void shuchu(char a[][30],int n)
- {
- int i;
- for(i=0;i<n;i++)
- printf("%s\n",&a[i][0]);
- }
复制代码
上面的5个字符串是存在常量区的这样修改是错误的
所以我用了个二维数组
还有char *a[] 是个数组 数组里的元素是个指针
所以你a[j]其实就是换到其它字符串了 没操作到字符串里的字符
自己看代码吧 |
|