[c語言]模擬實現strncpy,strncat,strncmp
阿新 • • 發佈:2019-01-23
1.模擬實現strncpy
//1.模擬實現strncpy(拷貝前n個字元)
#include<stdio.h>
#include<assert.h>
char * my_strncpy(char *dest,const char *src,size_t num)
{
char *p = dest;
int i = 0;
assert(dest != NULL);
assert(src != NULL);
while(num--)
{
*(dest + i) = *(src + i);
i++;
}
return p;
}
int main()
{
char a1[1024] = {0};
char a2[1024] = "asdfgh";
my_strncpy(a1,a2,3);
puts(a1);
return 0;
}
2.模擬實現strncat
//2.模擬實現strncat(拼接前n個字元)
#include<stdio.h>
#include<assert.h>
char * my_strncat(char *dest,const char *src,size_t num)
{
char *ret = dest;
int i = 0;
assert(dest != NULL );
assert(src != NULL);
while(*dest != '\0')
{
dest++;
}
while(num--)
{
*(dest + i) = *(src + i);
i++;
}
return ret;
}
int main()
{
char a1[1024] = "today is";
char a2[1024] = " a good day or not";
my_strncat(a1,a2,11);
puts(a1);
return 0;
}
3.模擬實現strncmp
//3.模擬實現strncmp(前n個字元比較)
#include<stdio.h>
#include<assert.h>
int my_strncmp(const char *dest,const char *src,size_t num)
{
int i = 0;
assert(dest != NULL);
assert(src != NULL);
while(num--) //a1>a2返回1,a1<a2返回-1,等於返回0
{
if(*(dest + i) == *(src + i))
{
i++;
}
else if(*(dest + i) > *(src + i))
{
return 1;
}
else
{
return -1;
}
}
return 0;
}
int main()
{
char a1[1024] = "zabcd";
char a2[1024] = "fabc";
printf("%d\n",my_strncmp(a1,a2,2));//根據字典序,此處應輸出數字1
return 0;
}