这里分别展示了
strlen函数:计算字符串长度
strcmp函数:比较两个字符串大小
strcpy函数:将src字符串复制到dst字符串中
strcat函数:将src字符串连接到dst字符串的末尾
strchr函数:在字符串中查找给定字符的第一个匹配之处
strstr函数:在字符串中查找给定字符串的第一个匹配之处
的c语言实现,在嵌入式笔试中也经常遇到关于字符串操作的编程题目,本人遇到过的题目有:strlen函数实现,字符串字母参杂数字,去除数字并且排序。
下面是各个函数的实现:
通过指针实现:
// strlen函数:计算字符串的长度
size_t strlen(const char *str) { //传入字符串首地址
size_t len = 0;
while (str[len]) ++len; //直到遍历不到字符时候停止
return len;
}
// strcmp函数:比较两个字符串的大小
int strcmp(const char *str1, const char *str2) {
while (*str1 && *str1 == *str2) ++str1, ++str2;
return *str1 - *str2;
}
// strcpy函数:将src字符串复制到dst字符串中
char *strcpy(char *dst, const char *src) {
char *ret = dst;
while (*src) *dst++ = *src++;
*dst = 0;
return ret;
}
// strcat函数:将src字符串连接到dst字符串的末尾
char *strcat(char *dst, const char *src) {
char *ret = dst;
while (*dst) ++dst;
while (*src) *dst++ = *src++;
*dst = 0;
return ret;
}
// strchr函数:在字符串中查找给定字符的第一个匹配之处
char *strchr(const char *str, int ch) {
while (*str && *str != (char)ch) ++str;
return *str == (char)ch ? (char *)str : NULL;
}
// strstr函数:在字符串中查找给定字符串的第一个匹配之处
char *strstr(const char *str, const char *substr) {
size_t len = strlen(substr);
while (*str) {
if (!strncmp(str, substr, len)) return (char *)str;
++str;
}
return NULL;
}
通过数组实现:
// strlen函数:计算字符串的长度
size_t strlen(const char str[]) {
size_t len = 0;
while (str[len]) ++len;
return len;
}
// strcmp函数:比较两个字符串的大小
int strcmp( char str1[], char str2[]) {
size_t i = 0;
while (str1[i] && str1[i] == str2[i]) ++i;
return str1[i] - str2[i];
}
// strcpy函数:将src字符串复制到dst字符串中
void strcpy(char dst[], const char src[]) {
size_t i;
for (i = 0; src[i]; ++i) dst[i] = src[i];
dst[i] = 0;
}
// strcat函数:将src字符串连接到dst字符串的末尾
void strcat(char dst[], const char src[]) {
size_t i, j;
for (i = 0; dst[i]; ++i);
for (j = 0; src[j]; ++j) dst[i + j] = src[j];
dst[i + j] = 0;
}
// strchr函数:在字符串中查找给定字符的第一个匹配之处
char *strchr(const char str[], int ch) {
size_t i;
for (i = 0; str[i] && str[i] != (char)ch; ++i);
return str[i] == (char)ch ? (char *)(str + i) : NULL;
}
// strstr函数:在字符串中查找给定字符串的第一个匹配之处
char *strstr(