352 字
1 分钟
字符串函数的使用和模拟实现(strncpy、strncat、strncmp)
strncpy
#include<string.h>char * strncpy ( char * destination, const char * source, size_t num )使用说明
从字符串中复制字符
将源的第一个字符数复制到目标。如果在复制 num 个字符之前找到源 C 字符串的末尾(由 null 字符表示),则目标将填充零,直到总共写入 num 个字符为止。
如果源长度超过 num,则不会在目标末尾隐式附加空字符。因此,在这种情况下,不应将目标视为以空结尾的 C 字符串(这样读取它会溢出)。
例如:
#include<stdio.h>#include<string.h>int main(){ char str1[50] = "i love you"; char str2[20] = "do not leave you"; printf("%s\n",strncpy(str1,str2,6)); return 0;}模拟实现
char* my_strncpy(char* a, const char* b, size_t num){ char* ret = a; while (num) { *a++ = *b++; num--; } return ret;}
int main(){ char str1[50] = "i love you"; char str2[20] = "do not leave you"; printf("%s\n",my_strncpy(str1,str2,6)); return 0;}
strncat
#include<string.h>char * strncat ( char * destination, const char * source, size_t num )使用说明
从字符串追加字符
将源的第一个数字字符追加到目标,外加一个终止空字符。
如果源中 C 字符串的长度小于 num,则仅复制终止空字符之前的内容。
例如:
int main(){ char str1[50] = "i love you "; char str2[20] = "do not leave you"; printf("%s\n",strncat(str1,str2,30)); return 0;}模拟实现
#include<stdio.h>char* my_strncat(char* a, const char* b, size_t num){ char* ret = a; while (*a) { a++; } while (num&&*b) { *a++ = *b++; num--; } return ret;}
int main(){ char str1[50] = "i love you "; char str2[20] = "do not leave you"; printf("%s\n",strncat(str1,str2,30)); return 0;}
strncmp
#include<string.h>int strncmp ( const char * str1, const char * str2, size_t num )使用说明
比较两个字符串的字符
将 C 字符串 str1 的字符数与 C 字符串 str2 的字符数进行比较。
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续使用以下对,直到字符不同,直到达到终止的空字符,或者直到两个字符串中的 num 字符匹配,以先发生者为准。
例如:
int main(){ char str1[50] = "abcd"; char str2[20] = "abbb"; printf("%d\n",strncmp(str1,str2,3)); return 0;}模拟实现
#include<stdio.h>int my_strncmp(const char* a, const char* b, size_t num){ while (*a && *b && *a == *b && --num) { a++; b++; } return *a - *b;}
int main(){ char str1[50] = "abcd"; char str2[20] = "abbb"; printf("%d\n",my_strncmp(str1,str2,3)); return 0;}
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
字符串函数的使用和模拟实现(strncpy、strncat、strncmp)
https://blog.csdn.net/GenshiN__IMPACt_/article/details/132845629 部分信息可能已经过时
相关文章 智能推荐
1
字符串函数的使用和模拟实现(strcmp,strlen,strstr,strcpy,strcat)
C语言 介绍 strcmp、strlen、strstr、strcpy 与 strcat 的常用方式,并通过模拟实现理解字符串函数的工作原理。
2
C语言的分支语句( if 与 switch语句 )
C语言 介绍 C 语言 if、else 与 switch 分支语句的语法和执行逻辑,并通过实例比较不同分支结构的适用场景。
3
用C语言解答林尼的题目
C语言 将“林尼的题目”建模为枚举与条件判断问题,使用 C 语言逐步筛选并求出符合约束的饮料排列。
4
C语言的循环语句(while,for与 do-while循环)
C语言 系统梳理 C 语言 while、for 和 do-while 循环的语法、执行流程、循环控制及典型练习。
5
指针 (1)
C语言 介绍取地址和解引用操作、指针变量的声明与使用,以及指针类型、指针运算和基础传参知识。