C语言里面字符串函数 strcmp bcmp区别??

作者&投稿:直郊 (若有异议请与网页底部的电邮联系)
C语言中 memcmp 和 strcmp 函数有哪些区别~

memcmp按字节比较,可以设置比较的位数 strcmp按字符比较,只能比较整个字符串 都是用ASCII码进行比较,效率在数量级上不会相差太大的 望采纳

比较一下:
函数原型:extern int strcmp(const char *s1,const char * s2);
int strncmp(char *str1, char *str2, int maxlen);
可以看出strncmp多一个参数maxlen,区别就在这里,这个表示的是比较字符串的前maxlen长度的字符

两者返回值也不同:
strcmp,当s1<s2时,返回负数
当s1==s2时,返回0
当s1>s2时,返回正数
strncmp:如果前maxlen字节完全相等,返回值就=0;
如果在前maxlen字节比较过程中,出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。

bcmp memcmp功能相同。bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。

strcmp与这两者不同处在于它接受的是0结尾的字符串,比如你有2个内存区域的值分别为 0x0a, 0x00, 0x0d与0x0a, 0x00, 0x0c。那么比较这2个内存的前3个字符是否相同,strcmp就无法做到,因为到第二字符0的时候函数就任务字符串结束了。

int strcmp(const char*, const char*);
是比较两个字符串的大小,请注意它只针对字符串而言的。

int bcmp(const void* buf1, const void* buf2, int n);
是比较内存区域buf1和buf2的前n个字节是否相等。从参数类型const void*可以看出它是针对所有类型的内存块(当然也包括字符串啦,而不仅仅是字符串)。

int memcmp(const void *buf1, const void *buf2, unsigned int count);
比较内存区域buf1和buf2的前count个字节的大小。从参数类型const void*可以看出它是针对所有类型的内存块(当然也包括字符串啦,而不仅仅是字符串)。

有2个问题值得说明:
1.比较相等和比较大小不一样。
比较相等,返回0或非0,(至于这个返回的数大于0还是小于0没有任何意义)
比较大小返回大于0或0或小于0,都是可以的。
2.strcmp是bcmp和memcmp的特化版本,前者只针对字符串,而后两者针对所有的数据类型。
比如:
int a = 5;
int b = 6;
memcmp(&a, &b, sizeof(int)); //is ok
当需要比较字符串的时候请用strcmp,因为它更方便,不需要像memcmp和bcmp一样有第3个参数,这主要依赖字符串一定是以'\0'结尾的,所以使用更方便一些。


C语言中对字符串进行操作的标准库函数有哪些
具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串到数值类型的转换 strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换...

c语言中,puts和printf函数有什么区别?
puts和printf函数的区别如下:1、不同的换行符 puts()函数会自动在字符串末尾添加一个换行符,这意味着它会自动换行,而printf()函数没有此功能。2、输出内容不同 puts()函数只能输出字符串,不能对输出和转换指令进行标准化,而printf()函数可以。

c语言考试,问常用字符串操作函数有那几个?
首先要明白,sizeof不是函数,而是操作符;strlen是函数。操作符sizeof用来判断对象、类型所占用的内存空间的字节数,strlen是计算一个字符串以字节计的长度。如:sizeof(int)、sizeof(double)、sizeof(char)等是合法的,可以计算出int、double、char这些类型所占用的字节数分别是4、8、1,而用strlen则...

C语言中string.h中用到的字符串处理函数有哪些???
2.函数名: strcat 功 能: 字符串拼接函数 3.函数名: strchr 功 能: 在一个串中查找给定字符的第一个匹配之处\\ 4.函数名: strcmp 功 能: 串比较 5.函数名: strncmpi 功 能: 将一个串中的一部分与另一个串比较, 不管大小写 6.函数名: strcpy 功 能: 串拷贝 7.函数名: ...

C语言字符串处理函数strtok
include <string.h> char *strtok( char *str1, const char *str2 ); 功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为...

C语言:编写一个函数,接受一个字符串和一个字符
1、可以写一个函数接受一个字符串和一个字符,如果此字符出现在字符串中,就将串中的字符删除,要求删除该字符后,后续的字符向前移,以填充该空位。2、例程:include<stdio.h>#include<string.h>#define MAX 80void Delete(char str[],char c){int i;int l=strlen(str);for(i=0;i<l;i++...

c语言字符长度函数
第一个字符为:a 第二个字符为:b 第三个字符为:\\n (换行符)第四个字符为:2 第五个字符为:\\ (\\\\转义为\\)所以答案为5。(下图为实际代码演示)扩展内容:strlen()函数(C语言函数):strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某...

R语言字符串处理常用函数
R语言中常用的字符串处理函数:(1)得到字符串长度:nchar()生成示范字符串 (2)剪切字符串:strsplit()对字符串进行剪切 (3) 得到子字符串:substr()得到子字符串 (4) 判断字符串中是否有某个字串:grepl()判断字符串中是否有某个字串 (5) 字符串替换:gsub()(6)字符串定位 在Hmisc...

C语言,strcmp(),字符串比较函数,怎么比较
从左到右,依次比较字母的ASCII码的大小,遇到不同字符或'\\0'结束。基本形式:strcmp(str1,str2)str1=str2时,返回零;str1<str2时,返回负数;str1>str2时,返回正数。比如Apple和Banana比较,先比较第一个字母A和B,A的ASCII码是65,B的是66,所以Apple<Banana。compare和computer比较,前4个...

C语言中如何编写一个字符串复制函数,并在主函数中调用它。
include<stdio.h> char *custom_cpy(char *to,char *from);int main(int argc,char *argv[]){ char *from = "i like c langanger";char to[30];char *ptr = custom_cpy(to,from);printf("%s,%s\\n",ptr,to);return 0;} char *custom_cpy(char *to,char *from){ if(to == ...

孝南区15155756585: C语言中strcmp是什么意思?有什么功能和作用? -
化严佐坦: strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值. 比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不...

孝南区15155756585: C语言中strcmp是什么意思? -
化严佐坦: C/C++函数,比较两个字符串.设这两个字符串为str1,str2,若str1==str2,则返回零;若str1>str2,则返回正数;若str1

孝南区15155756585: 在C语言中,strcmp()是什么函数? -
化严佐坦: 头文件:#include <string.h> strcmp() 用来比较字符串(区分大小写),其原型为:int strcmp(const char *s1, const char *s2); 【参数】s1, s2 为需要比较的两个字符串.字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值...

孝南区15155756585: c语言中的strcmp函数 -
化严佐坦: 函数原型:extern int strcmp(const char *s1,const char *s2); 函数功能:以ascii码值比较两个字符串的大小,当s1<s2时,返回为负数,当s1=s2时,返回值= 0,当s1>s2时,返回正数.头文件:#include <string.h> 参数说明:两个比较字符串的首地址指针.注意事项:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数.

孝南区15155756585: 请教大家一下c语言中的strcmp函数的使用方法 -
化严佐坦: int strcmp (p1, p2)const char *p1;const char *p2; { register const unsigned char *s1 = (const unsigned char *) p1; register const unsigned char *s2 = (const unsigned char *) p2; unsigned reg_char c1, c2;do{c1 = (unsigned char) *s1++;c2 = (...

孝南区15155756585: C语言中,strcmp( )是什么函数? -
化严佐坦: 函数名: strcmp 功 能: 串比较 用 法: int strcmp(char *str1, char *str2); 程序例: #include#includeint main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater ...

孝南区15155756585: 关于c语言中strcmp函数,求大神解答. -
化严佐坦: 12345678910 intsstrcmp(chars[],chart[]) { inti=0 ,n=0; while(s[i]&&t[i]&&(s[i]==t[i]));i+=1; n=s[i]-t[i]; //if(s[i]==t[i]) //n=0; returnn; }

孝南区15155756585: 编写函数strcmp()用主函数调用实现两个字符串的比较的C 程序怎么编 -
化严佐坦: LZ问题不是很明确,因为strcmp()本身是字符串处理函数,不知道你是想问这个函数的运用方法还是自己想编一个可以实现此功能的被调函数.两个都跟你说了吧.1.关于strcmp()作为字符串处理函数的运用.1)在运用时首先要在源程序...

孝南区15155756585: strcmp在c语言中是什么意思 -
化严佐坦: 字符串比较函数,两个字符串,从第一个字符开始比,如果相同,继续向下比,如果不同,看这两个字符的ASCII码,如果第一个字符串的比较大,则返回1,否则返回-1;

孝南区15155756585: c语言中的strcmp字符串比较函数是输入两个指针还是两个字符串? -
化严佐坦: int strcmp(char *s1,char * s2); 这里char *s1可以是一个字符串,其实该函数参数取的是字符串的首地址,一直读取到'\0'结束(字符串型的末尾都有一个字符'\0'),这样就把整个字符串读进去了.所以,也可以用字符串指针的形式,指针就是地址,把字符串的首地址赋值给一个指针p,那么p同样可以是此函数的参数char *s1 两种输入都正确

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网