分别实现atoi,strncat,strncpy函数
atoi
int my_atoi(const char *string)
{
char *p = string;
int i = 0;
//先跳过不是数字的部分
while (*p<48 || *p>57)
{
p++;
}
//循环到数字结束为止
while (*p >= 48 && *p <= 57)
{
i = i * 10 + *p-48;
p++;
}
return i;
}
int main()
{
char *p = "1234";
int i = my_atoi(p);
printf("%d\n", i);
return 0;
strnca
char *my_strncat(char *strDest, const char *strSource, size_t count)
{
char *p = strDest;
char *t = strSource;
//先将指针挪到字符穿末尾
while (*p != '\0')
{
p++;
}
//在末尾拼接
for (int i = 0; i < count; i++)
{
*p++ = *t++;
}
//添加\0
*(p + 1) = '\0';
return strDest;
}
int main()
{
char arr[10]="abc";
char *p = "xyz";
my_strncat(arr, p, 5);
printf("%s\n", arr);
return 0;
}
strncpy
char *my_strncpy(char *strDest, const char *strSource, size_t count)
{
char *p = strDest;
char *t = strSource;
//拷贝count个字符或者strSource结束
while (*t != '\0'&& count != 0)
{
*p++ = *t++;
count--;
}
//如果strSource提前结束,其余全部拷贝\0
for (int i = 0; i < count; i++)
{
*p++ = '\0';
}
return strDest;
}
int main()
{
char arr[10] = "abcdefg";
char *p = "xyz";
my_strncpy(arr, p, 5);
printf("%s\n", arr);
return 0;
}