模拟实现C库函数:strncpy、strncat和strncmp
2017-11-30 17:40
387 查看
strncat函数是字符串链接函数,将* src字符串中n个字符连接到* dest字符串的有效字符的后面,最后还要加上’\0’
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <windows.h>
#include <assert.h>
char *my_strncat(char *dest, const char *src,size_t num)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest != '\0') //先让dest的指针指向最后
{
*dest++;
}
while (num--)
{
*dest++ = *src++;
}
if (*(dest - 1) != '\0') //判断是否已经将‘\0’复制到目标字符串中
{
*dest = '\0'; //若没有则给目标字符串最后添加‘\0’
}
return ret;
}
int main()
{
char src[] = "world !";
char dest[20] = "hello ";
printf("%s\n", my_strncat(dest, src, 5));
system("pause");
return 0;
}
strncmp函数是字符串比较函数,若* str1的第一个字符的ASCII值大于* str2第一个字符的ASCII值,返回值大于0, 若* str1的第一个
字符的ASCII值小于*str2第一个字符的ASCII值,返回-1, 否则继续比较下一个字符,以此类推,直到遇到第n个字符为止
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <windows.h>
#include <assert.h>
int my_strncmp(const char *str1, const char *str2, size_t num)
{
assert(str1);
assert(str2);
while (num--)
{
if (*str1 == *str2)
{
str1++;
str2++;
}
else if ((*str1 - *str2) > 0)
{
return 1;
}
else
{
return -1;
}
}
return 0;
}
int main()
{
char *str1 = "asdfga";
char *str2 = "asdfgh";
int ret = my_strncmp(str1, str2, 6);
printf("%d\n", ret);
system("pause");
return 0;
}
strncpy是将一个字符串的n个字符复制到另一个字符串中,模拟实现strncpy是要注意到字符串的"\0",因为是复制n个字符所以不知道是否将"\0"复制到目标字符串中,所以要在程序中加上给目标字符串附上"\0"
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <Windows.h>
#include <assert.h>
char *my_strncpy( char *dest, const char *src, size_t num)
{
assert(dest);
assert(src);
char *ret = dest;
while (num--)
{
*dest++ = *src++;
}
if (*(dest - 1) != '\0') //判断是否已经将‘\0’复制到目标字符串中
{
*dest = '\0'; //若没有则给目标字符串最后添加‘\0’
}
return ret;
}
int main()
{
char *src = "1234adaq552";
char dest[20];
printf("%s\n", my_strncpy(dest, src, 5));
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <windows.h>
#include <assert.h>
char *my_strncat(char *dest, const char *src,size_t num)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest != '\0') //先让dest的指针指向最后
{
*dest++;
}
while (num--)
{
*dest++ = *src++;
}
if (*(dest - 1) != '\0') //判断是否已经将‘\0’复制到目标字符串中
{
*dest = '\0'; //若没有则给目标字符串最后添加‘\0’
}
return ret;
}
int main()
{
char src[] = "world !";
char dest[20] = "hello ";
printf("%s\n", my_strncat(dest, src, 5));
system("pause");
return 0;
}
strncmp函数是字符串比较函数,若* str1的第一个字符的ASCII值大于* str2第一个字符的ASCII值,返回值大于0, 若* str1的第一个
字符的ASCII值小于*str2第一个字符的ASCII值,返回-1, 否则继续比较下一个字符,以此类推,直到遇到第n个字符为止
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <windows.h>
#include <assert.h>
int my_strncmp(const char *str1, const char *str2, size_t num)
{
assert(str1);
assert(str2);
while (num--)
{
if (*str1 == *str2)
{
str1++;
str2++;
}
else if ((*str1 - *str2) > 0)
{
return 1;
}
else
{
return -1;
}
}
return 0;
}
int main()
{
char *str1 = "asdfga";
char *str2 = "asdfgh";
int ret = my_strncmp(str1, str2, 6);
printf("%d\n", ret);
system("pause");
return 0;
}
strncpy是将一个字符串的n个字符复制到另一个字符串中,模拟实现strncpy是要注意到字符串的"\0",因为是复制n个字符所以不知道是否将"\0"复制到目标字符串中,所以要在程序中加上给目标字符串附上"\0"
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>
#include <Windows.h>
#include <assert.h>
char *my_strncpy( char *dest, const char *src, size_t num)
{
assert(dest);
assert(src);
char *ret = dest;
while (num--)
{
*dest++ = *src++;
}
if (*(dest - 1) != '\0') //判断是否已经将‘\0’复制到目标字符串中
{
*dest = '\0'; //若没有则给目标字符串最后添加‘\0’
}
return ret;
}
int main()
{
char *src = "1234adaq552";
char dest[20];
printf("%s\n", my_strncpy(dest, src, 5));
system("pause");
return 0;
}
相关文章推荐
- 模拟实现C库函数strncpy、strncat、strncmp
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串函数模拟实现之strcpy、strncpy、strcmp、strncmp、strcat、strncat
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strcpy 模拟实现strncpy 模拟实现strcat 模拟实现strncat 模拟实现strcmp 模拟实现strncmp 模拟实现memcpy 模拟实现memmove
- c语言中部分限制字符函数的实现strncmp,strncat,strncpy,strstr,strrstr
- strlen(),strcpy(),strncpy(),strcat(),strncat(),strcmp(),strncmp()等函数的实现
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp,memcpy,memmove
- 模拟实现//strcpy //strncpy //strcat //strncat //strcmp //strncmp //memcpy //memmove
- 模拟实现strncpy ,模拟实现strncat ,模拟实现strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- 模拟实现strncat( )函数
- 模拟实现C语言strncpy.strncat.strncmp函数
- 【c语言】模拟实现strcat()、strncat()函数
- [置顶] 【C语言】 实现strncpy,strncat,strncmp