回 帖 发 新 帖 刷新版面

主题:[讨论]这个图是什么意思???

输入3个字符串进行比较时!!!就发现这种情况了!!! 怎么回事!!!!

回复列表 (共6个回复)

沙发

scanf里的参数没有加&吧?

板凳

这道题程序是这样的:#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 楼

*a+j?      *(a+j)   !!!!!!!数组的表示方法哦~!

4 楼

问题不光这里一处
t没有分配内存,怎么能用strcpy呢?图上的错误是因为指针没有分配内存就要赋值才弹的错

5 楼


[code=c]
char *p,a[3][20],*t;

我给你回的贴上不是给你改了吗?
char *t改成 char t[20]={}
t只是个指针,没有初始化,内存空间不确定

后面strcpy(t,*a+j);肯定有问题
[/code]

6 楼

:#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?

我来回复

您尚未登录,请登录后再回复。点此登录或注册