【C库函数】strncpy函数详解

简介: 【C库函数】strncpy函数详解

strncpy

       拷贝n个字符到目标字符串中

函数原型

char*strncpy(char*dest,constchar*source,size_tcount);

参数讲解

参数 dest source count
解析 目标字符串地址 以 Null 结尾的源字符串地址 拷贝字符的个数

返回值讲解

函数返回目标字符串,没有返回值就是拷贝失败。

函数讲解

我们先看一下strcpy函数的错误使用

当sorce中字符个数多于dest所开辟的空间时,用strcpy拷贝编译器就崩溃。

(关于strcpy具体细节请参考:strcpy函数详解)。

为了避免上述情况,就诞生strncpy函数!

strncpy比strcpy多了一个count参数,当我们在使用strncpy就会考虑目标空间到底能放几个字符,所以strncoy函数就会比strcpy变得相对安全一点。我会分两个使用场景来介绍strncpy

(1)一般使用场景

当我们指定sorce中3字符拷贝到dest中的时,如下,就会覆盖dest中的前三个字符

(2)特殊使用场景(错误)

当然strncpy安全也是相对的,当拷贝字符串的个数超过源字符串中的个数时,就会出现下面的特殊情况

sorce中只有3个字符,而strncpy中却要拷贝5个字符到的dest中。虽然sorce中字符不够,但是strncpy可不管这么多,先把'q' 'w'  'e'拷贝到dest中去,然后用补'\0'够五个字符。


我们平常不要乱用strncpy,要按照实际需要来写,当然拷贝参数更不要超过sorce中字节个数,要不然就要越界访问了。



相关文章
|
6月前
|
安全 程序员 C语言
探索C语言库函数:字符串拷贝函数strcpy
探索C语言库函数:字符串拷贝函数strcpy
62 0
|
6月前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
6月前
|
编译器 C语言 C++
【C语言】strcpy()函数(字符串拷贝函数详解)
【C语言】strcpy()函数(字符串拷贝函数详解)
206 1
|
6月前
|
安全 程序员 C语言
探索C语言库函数:字符串拷贝函数strcpy()
探索C语言库函数:字符串拷贝函数strcpy()
34 0
|
C语言
strcat函数和strncat函数--【C语言】
strcat函数和strncat函数--【C语言】
|
C语言
strcmp函数和strncmp函数【C语言】
strcmp函数和strncmp函数【C语言】
|
C语言
strstr函数strtok函数strerror函数详解【C语言】
strstr函数strtok函数strerror函数详解【C语言】
|
程序员 C语言
C语言实现strcpy函数和strlen函数
在操作字符串的函数大块中,其中有两个函数分别是strcpy和strlen函数,他们都是在#include<string.h>中包含。strcpy函数可以将一个字符数组的内容放到另一个字符数组中,实现字符串拷贝,而strlen函数是求一组字符串的长度的函数。他们都由C库提供,方便程序员使用。
91 0
C库函数 ——strstr、strtok的详解
C库函数 ——strstr、strtok的详解
137 0