|
|
发表于 2012-2-3 14:23:31
|
显示全部楼层
本帖最后由 Tazy_ong 于 2012-2-3 21:56 编辑
地址是不可以交换的,你确定这个程序能正常运行?
根据这个程序的思路,我还原了一下这个程序,希望对你有帮助!- #include<stdio.h>
- #include<string.h>
- /* ----- 函数声明 -----*/
- void sort(char *[], int);
- void print(char *[], int);
- /* ----- 主函数 ----- */
- int main (void)
- {
- int len = 5; // 数组长度
- char *name[] = {"neame","sffeasa","efewf","efsaef","sdf" };
- sort(name, len);
- print(name, len);
- return 0;
- }
- /* ----- 冒泡排序 ----- */
- void sort(char *name[], int len)
- {
- int i, j;
- char *temp;
- for (i=0; i<len-1; i++)
- {
- for (j=0; j<len-i-1; j++)
- {
- /* 函数 strcmp(const char *, const char *)
- 功能是传入两个字符或字符串的地址,比较这两个字符或字符串的ASCII码大小,并返回一个整型值。
- 例如 : 如果 s1=s2, 则 strcmp(&s1, &s2) == 0
- 如果 s1>s2, 则 strcmp(&s1, &s2) > 0
- 如果 s1<s2, 则 strcmp(&s1, &s2) < 0
- */
- if ( 0 < (strcmp(name[j], name[j+1])) )
- {
- // 交换数组元素存储的地址
- temp = name[j];
- name[j] = name[j+1];
- name[j+1] = temp;
- }
- }
- }
- }
- /* ----- 输出 ----- */
- void print(char *name[], int len)
- {
- int i;
- for (i=0; i<len; i++)
- {
- printf("%s\n", name[i]);
- }
- }
- /*
- 在 VC++ 6.0 中的输出结果是:
- ----------------------------
- efewf
- efsaef
- neame
- sdf
- sffeasa
- ----------------------------
- 注意: 排序是按照ASCII码大小排序的,不是按照字符串长度排序的。
- */
复制代码 |
|