求字符串长度
mystrlen
int mystrlen(const char* buff) {
if (buff != nullptr) {
const char* start = buff;
int len = 0;
while (*buff != '\0') {
buff++;
len++;
}
buff = start;
return len;
}
}
字符串拷贝
mystrcpy
char* mystrcpy(char* stra, const char* strb) {
if (stra != nullptr && strb != nullptr) {
char* start = stra;
while (*strb != '\0') {
*stra = *strb;
strb++;
stra++;
}
*stra = '\0';
return start;
}
}
mystrncpy
char* mystrncpy(char* stra, char* strb, int n) {
if (stra != nullptr && strb != nullptr) {
char* start = stra;
for (int i = 0; i < n; i++) {
*stra = *strb;
strb++;
stra++;
}
*stra = '\0';
return start;
}
}
字符串比较
strcmp
bool mystrcmp(const char* stra, const char* strb) {
if (stra != nullptr && strb != nullptr) {
while (*stra != '\0' && *strb != '\0') {
if (*stra != *strb) {
return false;
}
else {
stra++;
strb++;
}
}
return *stra == '\0' && *strb == '\0';
}
else return false;
}
strncmp
bool mystrncmp(char* stra, char* strb, int n) {
if (stra != nullptr && strb != nullptr) {
int i = 0;
for (i; i < n; i++) {
if (*stra != *strb) {
return false;
}
else {
stra++;
strb++;
}
}
return true;
}
else return false;
}
字符串连接
mystrcat
char* mystrcat(char* stra, const char* strb) {
if (stra != nullptr && strb != nullptr) {
char* start = stra;
while (*stra != '\0') {
stra++;
}
while (*strb != '\0') {
*stra = *strb;
strb++;
stra++;
}
*stra = '\0';
return start;
}
return stra;
}
mystrncat
char* mystrncat(char* stra, char* strb, int n) {
if (stra != nullptr && strb != nullptr) {
char* start = stra;
while (*stra != '\0') {
stra++;
}
for (int i = 0; i < n; i++) {
*stra = *strb;
strb++;
stra++;
}
*stra = '\0';
return start;
}
return stra;
}
代码仅检查了传入字符串是否为空,对于n与字符串长度比较,内存分配等并无提示