zwj.123
发表于 2022-11-28 20:47:25
zhangjinxuan 发表于 2022-11-28 20:42
我明天再试试吧,我都晕了
我也是,呜呜呜,晕了
jhq999
发表于 2022-11-28 20:47:34
身份证18位
声明字符串必须是19个字符
zhangjinxuan
发表于 2022-11-28 20:48:40
jhq999 发表于 2022-11-28 20:47
身份证18位
声明字符串必须是19个字符
我怎么没想到!
zhangjinxuan
发表于 2022-11-28 20:54:03
zwj.123 发表于 2022-11-28 20:47
我也是,呜呜呜,晕了
我开了开电脑,我真的没问题,你说你的排序方法是怎样的?从大到小还是神马?
jhq999
发表于 2022-11-28 20:54:32
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *e1,const void *e2)
{
return *(int*)e1-*(int*)e2;
}
//身份证排序
int main()
{
char a={'\0'};
int b={'\0'};
int i,j,k;
//输入
for(i=0;i<3;i++)
{
scanf("%s",a);
}
//提取出生日期
//打印出生日期
for(i=0;i<3;i++)
{
strcpy(a,a+6);
a='\0';
printf("%s\n",a);
sscanf(a,"%d",&b);
}
//排序
qsort(b,3,sizeof(int),compare);
for(i=0;i<3;i++)
{
printf("%d\n",b);
}
return 0;
}
zwj.123
发表于 2022-11-28 21:04:10
zhangjinxuan 发表于 2022-11-28 20:54
我开了开电脑,我真的没问题,你说你的排序方法是怎样的?从大到小还是神马?
从小到大吧
zwj.123
发表于 2022-11-28 21:08:48
zhangjinxuan 发表于 2022-11-28 20:48
我怎么没想到!
我也是呜呜呜
zwj.123
发表于 2022-11-28 21:23:29
zhangjinxuan 发表于 2022-11-28 20:54
我开了开电脑,我真的没问题,你说你的排序方法是怎样的?从大到小还是神马?
好家伙,这两个编译器简直了,有点毒
zwj.123
发表于 2022-11-28 21:24:27
zhangjinxuan 发表于 2022-11-28 20:54
我开了开电脑,我真的没问题,你说你的排序方法是怎样的?从大到小还是神马?
我下次换着来算了,呜呜呜,头都晕了
zhangjinxuan
发表于 2022-11-29 09:33:25
zwj.123 发表于 2022-11-28 21:24
我下次换着来算了,呜呜呜,头都晕了
可以给一个你输入出错的数据吗?
zhangjinxuan
发表于 2022-11-29 09:43:10
本帖最后由 zhangjinxuan 于 2022-11-29 09:55 编辑
zwj.123 发表于 2022-11-28 20:47
我也是,呜呜呜,晕了
用这个就没事了,干嘛要用二维?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *e1,const void *e2)
{
return strcmp((char*)e1,(char*)e2);;
}
//身份证排序
int main()
{
char a={'\0'},b={'\0'};
int i,j,k;
//输入
for(i=0;i<3;i++)
{
scanf("%s",a);
}
//提取出生日期
for(j=0;j<3;j++)
{
for(i=6,k=0;i<14,k<8;i++,k++)
{
b=a;
}
}
//打印出生日期
for(i=0;i<3;i++)
{
printf("%s\n",b);
}
//排序
qsort(b,3,sizeof(b),compare);
for(i=0;i<3;i++)
{
printf("%s\n",b);
}
return 0;
}
还有,你输入的数据是什么,输出了什么,你预期输出什么,我很好奇{:10_277:}
zhangjinxuan
发表于 2022-11-29 09:52:06
zwj.123 发表于 2022-11-28 20:38
呜呜呜,为啥,我换个编译器试试
我这边完全没有问题
zwj.123
发表于 2022-12-1 19:41:08
zhangjinxuan 发表于 2022-11-29 09:33
可以给一个你输入出错的数据吗?
抱歉,这几天在上课,没注意看消息
zhangjinxuan
发表于 2022-12-1 19:42:00
zwj.123 发表于 2022-12-1 19:41
抱歉,这几天在上课,没注意看消息
没事
那么,你输入的数据是什么,输出了什么,你预期输出什么?
zwj.123
发表于 2022-12-1 19:52:56
zhangjinxuan 发表于 2022-11-29 09:43
用这个就没事了,干嘛要用二维?
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;
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=(char*)malloc(100*sizeof(char));
if(a==NULL)
{
for( j=0;j<=i;j++)
free(a);
}
}
//输入
for(i=0;i<n;i++)
{
scanf("%s",a);
}
// 排序
qsort(a,n,sizeof(a),compare);
//打印
for(i=0;i<n-1;i++)
{
printf("%s\n",a);
}
printf("%s",a);
printf("\n");
// free掉
for(i=0;i<n;i++)
{
free(a);
}
free(a);
return 0;
}
zhangjinxuan
发表于 2022-12-1 19:56:53
zwj.123 发表于 2022-12-1 19:52
1.身份证生日排序:用原本的一级指针没有问题
,用二维指针出现了segemetio ...
我测试的结果却是不管是二维还是一维,输出的总是:
li
zhang
wang
zhangjinxuan
发表于 2022-12-1 20:01:50
zwj.123 发表于 2022-12-1 19:52
1.身份证生日排序:用原本的一级指针没有问题
,用二维指针出现了segemetio ...
不太建议在不是字符串常量的时候用指针,平常我都是搞二维数组的
试试这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *e1, const void *e2) {
return strcmp((char*)e1, (char*)e2);
}
int main() {
char a = {'\0'};
for (int i = 0; i < 3; ++i)
scanf("%s", &a);
qsort(a, 3, sizeof(a), compare);
for (int i = 0; i < 3; ++i)
printf("%s\n", a);
return 0;
}
zwj.123
发表于 2022-12-1 20:02:04
zhangjinxuan 发表于 2022-12-1 19:56
我测试的结果却是不管是二维还是一维,输出的总是:
应该是li
wang
zhang
吧
zhangjinxuan
发表于 2022-12-1 20:02:42
zwj.123 发表于 2022-12-1 20:02
应该是li
wang
zhang
对啊,正确的应该是 li wang zhang,但是你的代码输出的好像是 li zhang wang
zwj.123
发表于 2022-12-1 20:02:57
zwj.123 发表于 2022-12-1 20:02
应该是li
wang
zhang
要不加个联系方式吧,我解释解释,这个不能发图片,太难了