模拟实现 strncpy( )函数
2017-11-24 13:06
309 查看
在模拟 strncpy( ) 函数之前我们先看一下它的源码声明
返回值是一个char * 指针,包含三个参数,一个 char * 的目标字符串,一个 const char * 的不允许改变的其内容的常量指针,和一个要拷贝字符个数的无符号整形,意思是将strSource源字符串中的前count个字符替换掉strDest目标字符串中的前count个字符。
这里有一点要注意,如果源字符串的长度小于count,则拷贝完源字符串之后,在目标字符串的后面追加0,直到conut个。
模拟strncpy( )函数如下
测试:
代码实现(环境:Visual Studio 2017)
char *strncpy( char *strDest, const char *strSource, size_t count );
返回值是一个char * 指针,包含三个参数,一个 char * 的目标字符串,一个 const char * 的不允许改变的其内容的常量指针,和一个要拷贝字符个数的无符号整形,意思是将strSource源字符串中的前count个字符替换掉strDest目标字符串中的前count个字符。
这里有一点要注意,如果源字符串的长度小于count,则拷贝完源字符串之后,在目标字符串的后面追加0,直到conut个。
模拟strncpy( )函数如下
char * My_strncpy(char * dest, const char *src, size_t n) { assert(dest); assert(src); char *ret = dest; while (n--) { *dest++ = *src++; } return ret; }
测试:
char str1[20] = "123456789"; char str2[20] = "abcde"; printf("%s", My_strncpy(str1, str2, 3));// 测试1: 个数3小于字符串"abcde"的长度
char str1[20] = "123456789"; char str2[20] = "abcde"; printf("%s\n", My_strncpy(str1, str2, 6));// 测试2: 个数6等于字符串"abcde"的长度
char str1[20] = "123456789"; char str2[20] = "abcde"; printf("%s\n", My_strncpy(str1, str2, 8));// 测试3: 个数8大于字符串"abcde"的长度
代码实现(环境:Visual Studio 2017)
//1.模拟实现strncpy
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <assert.h>
#pragma warning( disable : 4996)
char * My_strncpy(char * dest, const char *src, size_t n) { assert(dest); assert(src); char *ret = dest; while (n--) { *dest++ = *src++; } return ret; }
int main()
{
char str1
a7b6
_0[20] = "123456789";
char str1_1[20] = "123456789";
char str2[20] = "abcde";
printf("调用strncpy之前: str1_0: %s \n", str1_0);
strncpy(str1_0, str2, 5); //调用系统strncpy
printf("调用strncpy之后: str1_0: %s \n", str1_0);
printf("调用My_strncpy之前: str1_1: %s \n", str1_1);
My_strncpy(str1_1, str2, 5); //调用My_strncpy
printf("调用My_strncpy之后: str1_1: %s \n", str1_1);
system("pause");
return 0;
}
相关文章推荐
- 模拟实现C库函数:strncpy、strncat和strncmp
- 模拟实现C库函数strncpy、strncat、strncmp
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 【C语言】模拟实现strcpy()、strncpy()函数
- 一些关于memcpy memmove函数的区别,和模拟实现
- strlen strcmp strcat strcpy strncpy strstr strchar函数的实现
- FP编程实践:Haskell与F#的列表操作函数及其C++模拟实现
- pb用纯函数实现在数据窗口中模拟资源管理器鼠标单击动
- C语言模拟实现字符串操作函数
- 自己模拟实现strcpy函数功能
- 编写一个函数 实现strncpy一样的功能(图)
- 字符串相关函数的模拟实现
- C语言:模拟实现printf函数——my_printf函数哦
- 模拟实现 strcpy strcat strstr strcmp 函数
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 可变参数模拟printf()函数实现一个my_print()函数以及调用可变参数需注意的陷阱
- 模拟实现 printf 函数
- 模拟实现C语言strncpy.strncat.strncmp函数
- 模拟实现atof函数
- 模拟实现strncpy,strncat,strncmp