900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言之字符串探究(五):N系列字符串函数——strncpy strncat strncmp

C语言之字符串探究(五):N系列字符串函数——strncpy strncat strncmp

时间:2020-07-21 23:50:23

相关推荐

C语言之字符串探究(五):N系列字符串函数——strncpy strncat strncmp

相关博文:C++之char和string字符串类探究

相关博文:C语言之数组探究(一):定义、大小、初始化、访问和三要素

相关博文:C语言之字符串探究(一):字符串与字符数组

相关博文:C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现

相关博文:C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp

相关博文:C语言之字符串探究(四):读越界、写越界

相关博文:C语言之字符串探究(五):N系列字符串函数——strncpy、strncat、strncmp

相关博文:C语言之字符串探究(六):sprintf——把格式化的数据写入某个字符缓冲区

相关博文:C语言之字符串探究(七):atoi、itoa——整型数字和字符串的相互转换

相关博文:C语言之字符串探究(八):strchr、strstr、strtok

相关博文:C语言之字符串探究(九):空格去除——trim系列

相关博文:C语言之字符串探究(十):递归逆置字符串

N系列函数存在的意义,就是在避免写越界。

一.strncpy

strcpy( )不能检查目标空间是否能容纳源字符串的副本。拷贝字符串用strncpy( )更安全,该函数的第3个参数指明可拷贝的最大字符数。

例1:

运行结果:

附例1代码:

//小问学编程#include<stdio.h>int main(void){char* p = "123456";char str[10];strncpy(str,p,10); //将读到的'\0',写入strprintf("str = %s\n",str);char* pp = "12345678911234";strncpy(str,pp,10);printf("str = %s\n",str); //通常会有乱码打出char* ppp = "123456789aaaaa";strncpy(str,ppp,9); //只读到了9 个字符,然后在尾后加'\0'str[9] = '\0';printf("str = %s\n",str);return 0;}

二. strncat

strcat( )函数无法检查第1个数组是否能容纳第2个字符串。如果分配给第1个数组的空间不够大,多出来的字符溢出到相邻存储单元时就会出问题。当然,可以用strlen( )查看第1个数组的长度。给拼接后的字符串长度加1才够空间存放末尾的空字符。或者用strncat( ),该函数的第3个参数指定了最大添加字符数。

例2:

三. strncmp

strcmp( )函数比较字符串中的字符,直到发现不同的字符为止,这一过程可能会持续到字符串的末尾。而strncmp( )函数在比较两个字符串时,可以比较到字符不同的地方,也可以只比较到第3个参数指定的字符数。

例3:

例4:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。