编写函数 比较两个字符串的长度 返回较长的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写函数 比较两个字符串的长度 返回较长的字符串相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
char *fun (char *s, char *t)//为什么这样写 没有输出


while (*t!='\n'&&*s!='\n')// 这样是不是和while((*s)&&(*t))一样的效果,为什么

*t++;
*s++;

if(*t=='\n') return s;
if(*s=='\n') return t;


void main()
char a[20],b[20];
void NONO ();
printf("Input 1th string:");
gets(a);
printf("Input 2th string:");
gets(b);
printf("%s\n",fun (a, b));

1. ‘\n’指的是换行符,一个字符串里面是不可能存在着换行符的,当然C++里的string类型除外。
2.你要的是结束符'\0',而不是换行符。因为当输入字符串到数组,有两种形式,一种是无空格的
一种是有空格的,具体的输入方式C语言我不清楚,不过不论哪种在输入情况下遇到换行符'\n'都将
结束字符串输入,所以字符串数组至少最后一个字符是'\0',用来标识字符串结束。
所以循环条件改为:while(*s && *t);当然最好是: while((*s)!='\0' && (*t)!='\0')这样看着清晰明了
3.你的循环并未完全判断:
改为 :if(*s=='\0' && *t!='\0') return s(这儿不能够return s,因为你已经把指针进行加减了,所以指针s不再执行的是字符串首字符位置,应该在函数体第一句中用两个指针指向s,t如:char* temps=s; char* tempt=t; 然后结果return tempt;)
if(*s!='\0' && *t=='\0') return tempt;
else return temps; //(这儿是两个字符串长度相等情况下)

注意:你这个函数并无意义,因为如果你要返回长度更长的字符串,完全没有必要写
函数,因为有个strlen(char*)的函数,求的是字符串的长度的,你可以用
if(strlen(s)>strlen(p))等等这样的来判断。
参考技术A //正确的程序应该是这样写。
#include <stdio.h>
char *fun (char *s, char *t)//为什么这样写 没有输出

char *p=s,*q=t;
while (*p!='\0'&&*q!='\0')// 这样是不是和while((*s)&&(*t))一样的效果,为什么

*p++;
*q++;

if(*q=='\0') return s;
if(*p=='\0') return t;


void main()
char a[20],b[20];
void NONO ();
printf("Input 1th string:");
gets(a);
printf("Input 2th string:");
gets(b);
printf("%s\n",fun (a, b));


//1程序不正确,当然没有输出。
//2当条件是a!=0,或者a!='\0',完全可以简写成a,显得更专业。
//if(a!=0) 等价于 if(a)
//if(a!='\0') 等价于 if(a)
参考技术B 比较两个字符串的长度 返回较长的字符串
使用strlen
参考技术C 不是'\n', 是‘\0',把那个while语句的’\n' 改成'\0' 就OK了 参考技术D *fun是函数指针是地址,应该把*去掉。不一样,第一个*t!='\n'表示换行时结束,而第二个while(*t)表示字符串结束时(到最后一个字符时)结束。

编写一个函数,求字符串的长度

方法一:先把汉字用两个单字节字符代替,返回代替后的字符创长度

function getBytes1(str){
  var str=str.replace(/[^\x00-\xff]/g,‘**");

  return str.length;
}

方法二:先计算字符创长度并记录该值,循环字符串,若为汉字,长度加1,最终返回长度

function getBytes2(str){
  var bytes=str.length;

  for(var i=bytes;i--;){

    if(str.charCodeAt(i)>255){
       bytes++;
    }

  }
  return bytes++
}

以上是关于编写函数 比较两个字符串的长度 返回较长的字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

请问C++中两个字符串的大小是怎样比较的?

指针专题4-指针作为函数返回值(指针函数)

Javascript 拆分数组

使用 C++ 字符串类函数从较长的原始基因组字符串中生成“基因子字符串”

c#winform窗体有啥控件,能够显示较长的全部字符串。