C语言字符串查函数
1.入门介绍
C语言是一种广泛应用于系统开发和嵌入式领域的编程语言,字符串作为其重要的数据类型之一,在实际开发中经常需要进行查操作。C语言提供了多种字符串查函数,本文将详细介绍这些函数的用法和特点,并对比它们的优缺点,帮助读者在实际开发中选择合适的函数。
2. strstr函数
strstr函数用于在一个字符串中查指定子字符串的第一次出现位置。它的函数原型如下:
char *strstr(const char *haystack, const char *needle);
2.1 用法示例
下面是一个简单的示例,展示如何使用strstr函数查子字符串:
#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, world!";
    char *ptr = strstr(str, "world");
   
    if (ptr != NULL) {
        printf("Found at index %d\n", ptr - str);
    } else {
        printf("Not found\n");
    }
   
    return 0;
}
输出结果为:
Found at index 7
2.2 分析与总结
strstr函数到子字符串后,返回指向该子字符串第一次出现的位置的指针,如果没有到,返回NULL
strstr函数的时间复杂度为O(n*m),其中n为主字符串的长度,m为子字符串的长度。
strstr函数只能查子字符串的第一次出现位置,无法查所有出现的位置。
3. strchr函数
strchr函数用于在一个字符串中查指定字符的第一次出现位置。它的函数原型如下:
char *strchr(const char *str, int c);
3.1 用法示例
下面是一个简单的示例,展示如何使用strchr函数查字符:
#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, world!";
    char *ptr = strchr(str, 'o');
   
    if (ptr != NULL) {
        printf("Found at index %d\n", ptr - str);
    } else {
        printf("Not found\n");
    }
   
    return 0;
}
输出结果为:
Found at index 4
3.2 分析与总结
strchr函数到字符后,返回指向该字符位置的指针,如果没有到,返回NULL
strchr函数的时间复杂度为O(n),其中n为字符串的长度。
strchr函数只能查字符的第一次出现位置,无法查所有出现的位置。
4. strrchr函数printf函数中大小写d通用吗
strrchr函数用于在一个字符串中查指定字符的最后一次出现位置。它的函数原型如下:
char *strrchr(const char *str, int c);
4.1 用法示例
下面是一个简单的示例,展示如何使用strrchr函数查字符:
#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, world!";
    char *ptr = strrchr(str, 'o');
   
    if (ptr != NULL) {
        printf("Found at index %d\n", ptr - str);
    } else {
        printf("Not found\n");
    }
   
    return 0;
}
输出结果为:
Found at index 8
4.2 分析与总结
strrchr函数到字符后,返回指向该字符位置的指针,如果没有到,返回NULL
strrchr函数的时间复杂度为O(n),其中n为字符串的长度。
strrchr函数只能查字符的最后一次出现位置,无法查所有出现的位置。
5. strcmp函数
strcmp函数用于比较两个字符串的大小关系,即判断字符串是否相等。它的函数原型如下:
int strcmp(const char *str1, const char *str2);
5.1 用法示例
下面是一个简单的示例,展示如何使用strcmp函数比较字符串:
#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "abc";
    char str2[] = "abc";
   
    int result = strcmp(str1, str2);
   
    if (result == 0) {
        printf("Equal\n");
    } else if (result < 0) {
        printf("str1 is less than str2\n");
    } else {
        printf("str1 is greater than str2\n");
    }
   
    return 0;
}
输出结果为:
Equal
5.2 分析与总结
strcmp函数返回一个整数值,表示两个字符串的大小关系。如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示第一个字符串小于第二个字符串;如果返回值大于0,则表示第一个字符串大于第二个字符串。
strcmp函数的时间复杂度为O(n),其中n为字符串的长度。
6. strncmp函数
strncmp函数用于比较两个字符串的前n个字符的大小关系,即判断字符串是否相等。它的函数原型如下: