主题:[讨论]这个图是什么意思???
751536189
[专家分:0] 发布于 2010-07-10 07:00:00
输入3个字符串进行比较时!!!就发现这种情况了!!! 怎么回事!!!!
回复列表 (共6个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-07-10 07:58:00
scanf里的参数没有加&吧?
板凳
751536189 [专家分:0] 发布于 2010-07-10 08:14:00
这道题程序是这样的:#include<stdio.h>
#include<string.h>
void main()
{int i,j=0;
char *p,a[3][20],*t;
printf("请输入3个字符串:\n");
for(i=0;i<3;i++)
gets(a[i]);
printf("\n");
p=*a+j;
for(i=0;i<2;i++)
for(j=0;j<2-i-1;j++)
if(strcmp(*a+j,*a+j+1)>0)
{strcpy(t,*a+j);
strcpy(*a+j,*a+j+1);
strcpy(*a+j+1,t);
}
printf("输出从大到小的字符串:\n");
p=*a+j;
for(i=0;i<3;i++)
puts(a[i]);
}
我写的这个有些错误的地方帮忙看看!!!
3 楼
suzhoutaicang18 [专家分:360] 发布于 2010-07-10 08:47:00
*a+j? *(a+j) !!!!!!!数组的表示方法哦~!
4 楼
雪光风剑 [专家分:27190] 发布于 2010-07-10 09:21:00
问题不光这里一处
t没有分配内存,怎么能用strcpy呢?图上的错误是因为指针没有分配内存就要赋值才弹的错
5 楼
alweeq86 [专家分:1170] 发布于 2010-07-10 09:23:00
[code=c]
char *p,a[3][20],*t;
我给你回的贴上不是给你改了吗?
char *t改成 char t[20]={}
t只是个指针,没有初始化,内存空间不确定
后面strcpy(t,*a+j);肯定有问题
[/code]
6 楼
751536189 [专家分:0] 发布于 2010-07-10 10:59:00
:#include<stdio.h>
#include<string.h>
void main()
{int i,j=0;
char a[3][20],t[20];
printf("请输入3个字符串:\n");
for(i=0;i<3;i++)
gets(a[i]);
printf("\n");
for(i=0;i<2;i++)
for(j=0;j<2-i-1;j++)
if(strcmp(*a+j,*a+j+1)>0)
{strcpy(t,*a+j);
strcpy(*a+j,*a+j+1);
strcpy(*a+j+1,t);
}
printf("输出从大到小的字符串:\n");
for(i=0;i<3;i++)
puts(a[i]);
}
如果这道题不用指针来做的话,这个程序应该是对的,我试过了!!! 呵呵
字符串那不是用strcpy?
我来回复