1.strncpy
用法:
char * strncpy ( char * destination, const char * source, size_t num )
功能:
将字符串 src 中 n 个字符复制到字符数组 dest 中(它并不像 strcpy 一样只有遇到NULL才停止复制,而是多了一个条件停止,就是说如果复制到第n个字符还未遇到NULL,也一样停止),返回指向 dest 的指针。
src 和 dest 所指内存区域不可以重叠且 dest 必须有足够的空间来容纳 src 的字符串。
模拟实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
char *my_strncpy(char *des, const char *src, int count)
{
char *cp = des;
assert(src && des);
while(count && (*des++ = *src++))
{
count--;
}
if (count > 0)
{
while (--count)
{
*des++='\0';
}
}
return cp;
}
int main()
{
int n;
char str1[100] = {0};
char *str2 = "Hello world!";
printf("%s\n",str2);
printf("请输入需要复制字符的个数:");
scanf("%d",&n);
printf( "%s\n", my_strncpy(str1,str2,n));
return 0;
}
2.strncat
用法:
char * strncat ( char * destination, const char * source, size_t num )
功能:
把 src 所指字符串添加到 dest 结尾处(覆盖 dest 结尾处的 ‘\0’ )并添加’\0’。src 和 des t所指内存区域不可以重叠且 dest 必须有足够的空间来容纳 src 的字符串。返回指向 dest 的指针。
模拟实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
char *my_strncat(char *dest, const char *src, int count)
{
char *cp = dest;
assert(src && dest);
while (*dest != '\0')
{
*dest++;
}
while(count && *src)
{
*dest++ = *src++;
count--;
}
*dest ='\0';
return cp;
}
int main()
{
int n;
char str1[100] = "Hello";
char *str2 = " world!";
printf("%s\n",str1);
printf("%s\n",str2);
printf("请输入拼接字符的个数:");
scanf("%d",&n);
printf("%s\n", my_strncat(str1, str2, n));
return 0;
}
3.strncmp
用法:
int strncmp ( const char * str1, const char * str2, size_t num )
功能:
比较字符串的前N个字符。按ASCII码表比较字符串 str1 和 str2 的大小,如果 str1 小于 str2,返回值就 <0,反之如果 str1 大于 str2,返回值就 >0,如果 str1 等于 str2,返回值就 =0,len指的是 str1 与 str2 的比较的字符数。此函数功能即比较字符串 str1 和 str 2的前 len 个字符。
模拟实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
int my_strncmp(const char *arr1, const char *arr2, int count)
{
assert(arr1 && arr2);
while(count && (*arr1 == *arr2))
{
if (arr1 == '\0')
{
return 0;
}
arr1++;
arr2++;
count--;
}
return *arr1 - *arr2;
}
int main(void)
{
int n;
char *arr1 = "abcd";
char *arr2 = "abcde";
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("请输入比较字符的个数:");
scanf("%d", &n);
printf("%d\n", my_strncmp(arr1, arr2,n));
return 0;
}