指针数组的一个例题问题
刚学c,做到下面一个例题,是单词排序的一个程序;
但如果不按注释修改就运行出错,(也就是删除k=j和if(k!=i)两行,然后把上一个if语句中的k改成i;)
谁能帮帮忙,解释一下,谢谢。
#include "stdio.h"
#include"string.h"
void main()
{
void sort(char *p[],int n);
void print(char *p[],int n);
char *p[6]={"Microsoft","help","Visual","studio","micro","Help"};
int n=6;
sort(p,n);
print(p,n);
}
void sort(char *p[],int n)
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(p[k],p[j])>0)/*把k改成i,和删除下两行后正确运行*/
k=j; /*删除这行和下一行后可以正确运行*/
if(k!=i) /*删除这行和执行以上两行的操作后就可以运行,否则运行出错(应用程序出错)*/
{temp=p[i];p[i]=p[j];p[j]=temp;}
}
}
void print(char *p[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
}