用指向指针的指针的方法对5个字符串排序并输出
#include<stdio.h>
#include<string.h>
void main()
{
void px(char**p);
char chr[5][20], *q[5], **p = q;
int i;
for (i = 0;i < 5;i++) gets_s(chr[i],19);
fflush(stdin);
for (i = 0;i < 5;i++) q[i] = chr[i];
px(p);
for (i = 0;i < 5;i++) printf("%s",*p[i]);
getchar();
}
void px(char**p)
{
char*q = NULL;
int i, j;
for (i = 0;i < 4;i++)
{
for (j = i+1;j < 5;j++)
{
if (strcmp(*(p+j), *(p+i)) < 0)
{
q = *(p + i);
*(p + i) = *(p + j);
*(p + j) = q;
}
}
}
}
原因是第12行引起的
p是指向字符串的指针
p[i]已经是字符串了
此时如果再*p[i]就是单个字符了
因此应该是p[i]
更正后的代码:
#include<stdio.h>非常感谢,找了好久,都没发现。