字符串额模拟实现2
来源:互联网 发布:2016詹姆斯总决赛数据 编辑:程序博客网 时间:2024/06/05 16:23
1.strncpy
#include "stdio.h"
#include "assert.h"
#include"windows.h"
#include "string.h"
char * my_strncpy(char *dst, const char *src,size_t num)
{
char *tmp = dst;
assert(dst != NULL);
assert(src != NULL);
while ((*dst++ = *src++)&&num)
{
num--;
}//保证源字符串不为空时,不会以NULL结束
if (num)//当src的长度小于num
{
while (--num)//会对num影响
{
*(dst++) = "\0"; }
}
return tmp;
}
int main()
{
char arr1[40];
char arr2[] = "happy";
int len = sizeof(arr2);
printf("%s\n", my_strncpy(arr1, arr2, len));
system("pause");
return 0;
}
2.strncat
#include "stdio.h"
#include "assert.h"
#include"windows.h"
#include "string.h"
//前字符串与后字符串连接时不连接\0,在连接完之后添加
char * my_strncat(char *dst, const char *src,size_t num)
{
char *tmp = dst;//定义tmp指针指向char型dst指针
assert(dst != NULL);
assert(src != NULL);
while (*dst)
{
dst++;
}//先打印前字符串中的字符
while ((*dst++ = *src++) && num)//连接第一个与第二个字符串
{
num--;
}
*dst = '\0';//不连接\0,所以要添上\0;
return tmp;
}
int main()
{
char arr1[] = "haha";
char arr2[] = "to be or not";
printf("%s\n", my_strncat(arr1, arr2,5));
system("pause");
return 0;
}
3.strncmp
先从第一个开始比较,
当遇到与另一个不一样;
或者其中一个字符串结束; / /则相同
或者num个字符都比较完,还没有出现字符串结束; //前者大于后者
#include "stdio.h"
#include "assert.h"
#include"string.h"
#include "windows.h"
int * my_strncmp( const char *str1,const char *str2,size_t num)
{
assert(str1 !=NULL);
assert(str2 !=NULL);
while (num--)
{
if (*str1++ == *str2++)//将num个字符比完
{
if (*str1 =='\0')//其中一个字符串结束
return 0;//则说明相同
}
}
return *str1 - *str2;//num个字符串已经比完,字符串还没有结束,则说明前者大
}
int main()
{
char arr[][7] = { "hahaha", "hehehe", "hahahe"};
int i = 0;
for (i = 0; i < 3; i++)
{
if (my_strncmp(arr[i], "hahaxx", 4) == 0)
{
printf("%s\n", arr[i]);
}
}
system("pause");
return 0;
}
- 字符串额模拟实现2
- 字符串模拟实现
- 字符串函数模拟实现
- 字符串函数模拟实现
- 字符串函数模拟实现
- 模拟实现常用字符串函数
- 模拟实现字符串操作函数
- 字符串操作函数模拟实现
- 模拟实现部分字符串函数
- 字符串函数的模拟实现
- 字符串功能的模拟实现
- 模拟实现字符串操作函数
- 模拟实现strncat函数(字符串追加函数)
- 模拟实现C语言中的字符串函数
- 字符串操作函数模拟实现大全
- 模拟实现各类字符串查找操作函数
- 模拟实现一个字符串的反转
- 模拟库函数实现字符串的操作
- 【Python基础】1.4.4 图形用户实例——用Python实现简易聊天对话框
- 事件监听的几个要点
- 57. Insert Interval
- 推荐《Linux 多线程服务器端编程》
- Day11多态部分-2 【1.2 多态的前提】
- 字符串额模拟实现2
- ES6学习笔记
- 01背包问题
- 个人总结46
- leetcode-169. Majority Element
- git 入门
- 【最小堆】--排序 -- Timer 最小堆 举例
- Radiolink AT9驱动安装及固件升级
- myeclipse tomcat 运行项目报OOM