区分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栈空间溢出产生崩溃异常。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值