1.模拟实现strncpy
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
char* my_strncpy(char *dest, const char *src, size_t num)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(num--)
{
if( ! (*dest++ = *src++))
{
return ret;
}
}
*dest = '\0';
return ret;
}
int main()
{
char arr1[8] = "abcdefg";
char arr2[1024] = {0};
my_strncpy(arr2, arr1, 3);
//strncpy(arr2, arr1, 10);
printf("%s\n",arr2);
return 0;
}
2.模拟实现strncat
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<assert.h>
#include <string.h>
char *my_strncat(char *dest, const char *src, size_t num)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
{
dest++;
}
while(num--)
{
if( ! (*dest++ = *src++))
return ret;
}
*dest = '\0';
return ret;
}
int main()
{
char a[30] = "tomorrow";
my_strncat(a," better!", 3);
printf("%s\n",a);
return 0;
}
3.实现strncmp
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int my_strncmp(const char *str1, const char *str2, size_t num)
{
while(*str2 && *str1 && --num)
{
if(*str1 == *str2)
{
str1++;
str2++;
}
else
break;
}
if((unsigned char)*str1 > (unsigned char)*str2)
return 1;
else if((unsigned char)*str1 < (unsigned char)*str2)
return -1;
return 0;
}
int main()
{
char str1[10] = "abcd";
printf("%d\n",my_strncmp(str1, "abcde", 3));
printf("%d\n",my_strncmp(str1, "abcef",4));
printf("%d\n",my_strncmp(str1, "aac", 2));
return 0;
}
本文详细介绍了如何使用C语言模拟实现三个常见的字符串操作函数:strncpy、strncat和strncmp。通过源代码示例,读者可以深入理解这些函数的工作原理,并学习到如何在实际编程中正确地使用它们。
1365

被折叠的 条评论
为什么被折叠?



