读书人

指针

发布时间: 2012-04-08 14:38:30 作者: rapoo

指针 求助
#include< stdio.h >
#include< string.h >
#include< windows.h >
#define N 4
#define M 15

int main()
{
char *p[N],str[N][M];
int i;
void sort(char *p[N]);
for(i=0;i<N;i++)
p[i] = str[i];
printf("请输入10个字符串:\n");
for(i=0;i<N;i++)
scanf("%s",p[i]);

sort(p);
printf("排序后:\n");
for(i=0;i<N;i++)
printf("%-15s",p[i]);
printf("\n");
system("pause");
return 0;
}

void sort(char *p[N])
{
int i,j;
char s[M];
for(i=0;i<N-1;i++)
for(j=0;j<N-i;j++)
{
if(strcmp(*(p+j),*(p+j+1))>0)
{
strcpy(s,*(p+j));
strcpy(*(p+j),*(p+j+1));
strcpy(*(p+j+1),s);
}
}
}

[解决办法]

C/C++ code
void sort(char *p[N]){int i,j;char s[M];for(i=0;i<N-1;i++)for(j=0;j<N-i-1;j++)  //这里应该是j<N-i-1{if(strcmp(*(p+j),*(p+j+1))>0) //否则(p+j+1)会越界{strcpy(s,*(p+j));strcpy(*(p+j),*(p+j+1));strcpy(*(p+j+1),s);}}} 

读书人网 >C语言

热点推荐