在C语言中,字符串函数可以通过以下两种方式定义:
- 使用字符数组作为参数和返回值
#include// 字符串长度 int my_strlen(char str[]) { int len = 0; while (str[len] != '\0') { len++; } return len; } // 字符串复制 void my_strcpy(char dest[], char src[]) { int i = 0; while (src[i] != '\0') { dest[i] = src[i]; i++; } dest[i] = '\0'; } // 字符串连接 void my_strcat(char dest[], char src[]) { int dest_len = my_strlen(dest); int i, j = 0; for (i = dest_len; src[j] != '\0'; i++, j++) { dest[i] = src[j]; } dest[i] = '\0'; } int main() { char str1[100] = "Hello"; char str2[100] = "World"; printf("str1 length: %d\n", my_strlen(str1)); my_strcpy(str1, str2); printf("str1 after copy: %s\n", str1); my_strcat(str1, str2); printf("str1 after concatenation: %s\n", str1); return 0; }
- 使用指针作为参数和返回值
#include// 字符串长度 int my_strlen(char *str) { int len = 0; while (*str != '\0') { len++; str++; } return len; } // 字符串复制 char* my_strcpy(char *dest, char *src) { char *p = dest; while (*src != '\0') { *dest = *src; dest++; src++; } *dest = '\0'; return p; } // 字符串连接 char* my_strcat(char *dest, char *src) { char *p = dest; while(*dest != '\0') { dest++; } while (*src != '\0') { *dest = *src; dest++; src++; } *dest = '\0'; return p; } int main() { char str1[100] = "Hello"; char str2[100] = "World"; printf("str1 length: %d\n", my_strlen(str1)); my_strcpy(str1, str2); printf("str1 after copy: %s\n", str1); my_strcat(str1, str2); printf("str1 after concatenation: %s\n", str1); return 0; }
无论使用字符数组还是指针,都可以实现相同的功能。但是需要注意指针的使用需要更谨慎,避免指针操作超出字符串的范围。