|

楼主 |
发表于 2022-12-1 19:52:56
|
显示全部楼层
1.身份证生日排序:用原本的一级指针没有问题
,用二维指针出现了segemetion fault
2.字符串排序:这个嘛,我用一级指针,输入zhang,wang,li
目的是从小到大排序 输出的li,zhang,wang
用二维指针就正常了
我用的MobaXterm,编译的- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int compare(const void *e1,const void *e2)
- {
- // return strcmp(*(char**)e1,*(char**)e2);
- return strcmp((char*)e1,(char*)e2);
- }
- int main()
- {
- char**a;
- char ch[100];
- int n=3,i,j;
- //创建二维指针
- a=(char**)malloc(n*sizeof(char*));
- if(a==NULL)
- {
- free(a);
- exit(1);
- }
- for(i=0;i<n;i++)
- {
- a[i]=(char*)malloc(100*sizeof(char));
- if(a[i]==NULL)
- {
- for( j=0;j<=i;j++)
- free(a[j]);
- }
- }
- //输入
- for(i=0;i<n;i++)
- {
- scanf("%s",a[i]);
- }
- // 排序
- qsort(a,n,sizeof(a[0]),compare);
- //打印
- for(i=0;i<n-1;i++)
- {
- printf("%s\n",a[i]);
- }
-
- printf("%s",a[i]);
- printf("\n");
- // free掉
- for(i=0;i<n;i++)
- {
- free(a[i]);
- }
- free(a);
- return 0;
- }
-
复制代码 |
|