今天来实现strncpy、strncat、atoi三个字符串操作函数,具体实现如下。
🌈 strncpy:
C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
char* myStrncpy(char* dest, const char* src, int n) {
assert(dest && src);
char* ret = dest;
while (n--) {
*dest++ = *src++;
}
return ret;
}
🌈 strncat:
C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
char* myStrncat(char* dest, const char* src, int n) {
char* ret = dest;
dest = dest + strlen(dest);
while (n--) {
*dest++ = *src++;
}
return ret;
}
🌈 atoi:
C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
int myAtoi(const char* str) {
assert(str);
int ret = 0;
while (*str == ' ') {
str++;
}
int flag = 1;
if (*str == '-'||*str=='+') {
if (*str == '-') {
flag = -1;
}
str++;
}
while (*str != '\0') {
char c = *str;
if (c - 48 >= 0 && c - 48 <= 9) {
ret = ret * 10 + c - 48;
}
else if (c == '.') {
return ret * flag;
}
else {
return 0;
}
str++;
}
return ret*flag;
}