各位C语言的高手们,小弟今个遇到一道:将若干字符串按字母顺序(由小到大)输出,问题在下面

#include<stdio.h>
#include(string.h>
int main()
{
void sort(char * name[],int n);
void printf(char *name[],int n);
char * name[]={"Follow me","BASIC",Great Wall","FORTRAN","Computer design"};
int n=5;
sort(name,n);
printf(name,n);
system("pause");
returen 0;
}
void sort(char * name[],int n)
{
int i,j,k;
char * temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(name[k],name[j])>0) k=j; /*求各位大侠解释一下这句话的含义啊?name[k]和[j]明明是两个字符串的首地址,为什么可以直接拿来作比较呢*/
}
if (k!=i)
{temp=name[i];name[i]=name[k];name[k]=temp;}
}
}
void printf(char * name[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
return 0;
}

第1个回答  2012-08-03
strcmp的函数原型是:
int strcmp(const char *, const char *)
name是char *的数组,所以每个name[i]都是char *追问

我只想问一下strcmp(name[k],name[j])>0,中name[k]与name[j]到底比较什么东西啊,是字符串元素的首地址吗,还是别的啊?

追答

比较的是字符串,因为一个C语言的字符串是以\0结尾的,但是每个有效字符都不是\0,所以strcmp得到字符串的地址之后就可以读出整个字符串,从而完成比较~

第2个回答  2012-08-06
strcmp-->
相似回答