编写函数 比较两个字符串的长度 返回较长的字符串
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));
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语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。