一、模拟实现strncpy
#include<stdio.h>
#include<stdlib.h>
#include <assert.h>
char *my_strncpy(char *dest, const char *src, int n) {
assert(dest != NULL);
assert(src != NULL);
char *ret = dest;
while (n) {
*dest = *src;
dest++;
src++;
n--;
}
return ret;
}
int main(){
char str1[] = "ab";
char str2[] = "1123";
char *ret = my_strncpy(str1, str2, 4);
printf("%s\n", ret);
system("pause");
return 0;
}
二、模拟实现strncat
#include<stdio.h>
#include<stdlib.h>
#include <assert.h>
char *my_strncat(char *dest, const char *src, int n) {
assert(dest != NULL);
assert(src != NULL);
char *ret = dest;
while (*dest){
dest++;
}
while (n){
*dest = *src;
dest++;
src++;
n--;
}
*dest = '\0';
return ret;
}
int main() {
char a[] = "HELLO ";
char b[] = "WORLD";
char *ret = my_strncat(a, b, 3);
//strncat(a, b, 4);
puts(ret);
system("pause");
return 0;
}
三、模拟实现strncmp
#include<stdio.h>
#include<stdlib.h>
#include <assert.h>
int my_strncmp(const char *dest, const char *src, int n) {
assert(dest != NULL);
assert(src != NULL);
while (n-1 && (*dest == *src)){
if (*dest=='\0'){
return 0;
}
dest++;
src++;
n--;
}
return *dest - *src;
}
int main() {
const char a[] = "abcde";
const char b[] = "abcdd";
int n = my_strncmp(a, b,5);
if (n==0){
printf("a=b\n");
}
else if(n>0)
{
printf("a>b\n");
}
else
{
printf("a<b\n");
}
system("pause");
return 0;
}
本人拙见
多有纰漏