本文主要是介绍区分strcmp 与strncmp 、strcpy与strncpy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
strcmp原型:extern int strcmp(const char *s1,const char * s2);
用法:#include <string.h> 功能:比较字符串s1和s2。
说明: 当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如: "A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
strncmp
函数名: strncmp
功 能: 串比较
用 法: int strncmp(char *str1, char *str2, int maxlen);
说明:比较字符串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0,
maxlen指的是str1与str2的比较的字符数。此函数功能即比较字符串str1和str2的前maxlen个字符。
strcpy
原型声明:extern char *strcpy(char *dest,char *src);
头文件:string.h
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
注意:1.在使用strcmp与strncmp时遇到下面的问题:
char current_buttons[6]={‘0’,‘0’,‘0’,‘0’,‘0’,‘0’};
char save[6]={‘0’,‘0’,‘0’,‘0’,‘0’,‘0’};
在strcmp(current_buttons,save)时,发现返回并不为零,原因:逐个比较直到遇到不相等或者结束符\0,而此字符数组并没有结束符\0,所以出问题。
解决方法:使用 strncmp(current_buttons,save,6)即可将问题解决。
strncpy:字串复制
原型:char * strncpy(char *dest, char *src, size_t n);
功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。
说明: 如果n > dest串长度,dest栈空间溢出产生崩溃异常。
这篇关于区分strcmp 与strncmp 、strcpy与strncpy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!