返回列表 回复 发帖
晕了,粘贴不上方括号,还是我写把
char *max (char *p[],int n) //定义查找字符串数组中最大字符串函数
{


for(int i = 0;i < n;i++)
{
    if(strcmp(p[0],p)<0)  //假定p[0]最大,查找最大值
        //strcpy(p[0],p);
        p[0]=p;
}
return p[0];
}
char* max(char *p[],int n)
{
      for(int i=0;i<n;i++)
      {
        if(strcmp(p[0],p)<0)
        p[0]=p;
      }
return p[0];
}
方括号打不上,我不发了,上面我发的都是错的,晕成马了
2楼的是正确的,但确实是7楼的最简单
  只需将strcpy函数改为p[0]=p即可
但是为什么不能用strcpy函数呢?
之所以不能用strcpy是因为
作为指针数组的元素p[0]是一个指向字符串常量的指针,因而任何企图改变其所指内容的行为都是不合法的,strcpy 就是如此
下面是引用bjhph于2005-09-26 16:50发表的:
char* max(char *p[],int n)
{
      for(int i=0;i<n;i++)
      {
        if(strcmp(p[0],p)<0)
.......
这个程序把原来的数组中的元素改变了,不能单图少申请一个变量啊
strcpy(p[0],p);
能这样写吗?
不是已经知道strcmp(p[0], p)<0了,那你就不能把一个长度大的数组加到一个比它小的数组中去,会被截断的
strcmp(p[0], p)不是按照长度比较的
还return 个鸟,直接输出p[0]不就ok 了?
返回列表