1、使用标准库函数 strcmp
strcmp
是 C 标准库中的函数,用于比较两个字符串。
#include <stdio.h> #include <string.h> int main() { char str1[] = "hello"; char str2[] = "world"; int result = strcmp(str1, str2); if (result == 0) { printf("两个字符串相等\n"); } else if (result < 0) { printf("str1 小于 str2\n"); } else { printf("str1 大于 str2\n"); } return 0; }
2、使用标准库函数 strncmp
strncmp
可以指定要比较的字符数目。
#include <stdio.h> #include <string.h> int main() { char str1[] = "hello"; char str2[] = "helicopter"; int result = strncmp(str1, str2, 3); if (result == 0) { printf("前三个字符相等\n"); } else if (result < 0) { printf("str1的前三个字符小于str2的前三个字符\n"); } else { printf("str1的前三个字符大于str2的前三个字符\n"); } return 0; }
3、手动实现字符串比较
可以手动实现字符串比较逻辑,而不使用标准库函数。
#include <stdio.h> int compareStrings(const char *str1, const char *str2) { while (*str1 && (*str1 == *str2)) { str1++; str2++; } return *(unsigned char *)str1 - *(unsigned char *)str2; } int main() { char str1[] = "hello"; char str2[] = "hello"; int result = compareStrings(str1, str2); if (result == 0) { printf("字符串相等\n"); } else if (result < 0) { printf("str1 小于 str2\n"); } else { printf("str1 大于 str2\n"); } return 0; }
4、忽略大小写比较
通过将每个字符转换为小写来比较两个字符串,可以手动实现忽略大小写的字符串比较。
#include <stdio.h> #include <ctype.h> // 包含 tolower 函数 #include <string.h> // 包含 strlen 函数 int caseInsensitiveCompare(const char *str1, const char *str2) { while (*str1 && *str2) { char c1 = tolower((unsigned char)*str1); char c2 = tolower((unsigned char)*str2); if (c1 != c2) { return c1 - c2; } str1++; str2++; } return (unsigned char)*str1 - (unsigned char)*str2; } int main() { char str1[] = "Hello"; char str2[] = "hello"; int result = caseInsensitiveCompare(str1, str2); if (result == 0) { printf("忽略大小写字符串相等\n"); } else if (result < 0) { printf("忽略大小写 str1 小于 str2 \n"); } else { printf("忽略大小写 str1 大于 str2\n"); } return 0; }
5、比较字符串指针
当比较字符串指针时,实际上是在比较它们的地址,而不是内容。这在某些情况下是有用的。
#include <stdio.h> int main() { char str1[] = "hello"; char str2[] = "hello"; char *ptr1 = str1; char *ptr2 = str2; if (ptr1 == ptr2) { printf("指针相等\n"); } else { printf("指针不相等\n"); } // To actually compare content if (strcmp(ptr1, ptr2) == 0) { printf("字符串相等\n"); } else { printf("字符串不相等\n"); } return 0; }