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

#include<stdio.h>#include(string.h>intmain(){voidsort(char*name[],intn);voidprintf(ch... #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;
}
展开
 我来答
goode2008
2012-08-03 · TA获得超过471个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:226万
展开全部
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得到字符串的地址之后就可以读出整个字符串,从而完成比较~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谕佳迸矩收慰co
2012-08-06 · TA获得超过362个赞
知道答主
回答量:189
采纳率:0%
帮助的人:144万
展开全部
strcmp-->
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式