编译不通过,求改错!
/*输入5个不等长的字符串,在一函数中进行排序,输出结果*/
#include <stdio.h>
#include <string.h>
#define N 5
void compare (char *)
void mian ()
{
char *s[N];
char **p=s;
int i;
printf ("Enter string:\n");
for (i=0;i<N;i++)
scanf("%s",s+i);
compare(p);
printf("------------------");
for (i=0;i<N;i++)
printf("%s",*p+i);
}
void compare(char *p)
{
int i,j;
char *s=NULL;
for (i=0;i<N-1;i++)
for (j=i+1;j<N;j++)
{
if (strcmp(*p+i,*p+j)>0)
{
strcpy(s,*p+i);
strcpy(*p+i,*p+j);
strcpy(*p+j,s);
}
}
}
[解决办法]
- C/C++ code
#include <stdio.h>#include <string.h>#define N 5void compare (char *)//1、形参 2、少分号void mian (){char *s[N];char **p=s;int i;printf ("Enter string:\n");for (i=0;i<N;i++)scanf("%s",s+i);//一般操作就会越界,如果是指针数组没有分配内存compare(p);printf("------------------");for (i=0;i<N;i++)printf("%s",*p+i);}void compare(char *p){int i,j;char *s=NULL;for (i=0;i<N-1;i++)for (j=i+1;j<N;j++){if (strcmp(*p+i,*p+j)>0){strcpy(s,*p+i);//段错误strcpy(*p+i,*p+j);strcpy(*p+j,s);}}}//对指针操作实在不敢恭维。。。。