C语言实现忽略大小写字符串查找函数 strncasecmp

本函数实现了一个C语言函数 strncasestr,用于在一个给定长度的字符串中查找一个子字符串(忽略大小写),并返回子字符串的起始位置。函数接受三个参数:待查找的字符串、要查找的子字符串和待查找字符串的长度。

char *strncasestr(char *str1, const char *str2, int str1_len)
{
	int i;
	int len = strlen(str2);
	char *p = str1;

	if (0 == len) {
		return NULL;
	}

	for (i = 0; i < str1_len; i++) {
		if (*p == '\0') {
			break;
		}

		if (str1_len - i < len) {
			break;
		}
		if (!strncasecmp(p, str2, len))
			return p;
		++p;
	}
	return NULL;
}

函数说明:

  1. 函数首先计算子字符串 str2 的长度 len
  2. 使用 for 循环遍历 str1,直到到达字符串末尾或长度小于 len
  3. 循环中,使用 strncasecmp 函数比较当前位置 p 开始的 str1 子字符串与 str2,忽略大小写。
  4. 如果匹配成功,返回 p,即子字符串在 str1 中的起始位置;否则继续循环。
  5. 如果循环结束,说明没有找到匹配的子字符串,返回 NULL

使用方法:

char *str1 = "Hello World";
char *str2 = "world";
int str1_len = strlen(str1);

char *result = strncasecmp(str1, str2, str1_len);

if (result != NULL) {
	printf("子字符串在 %d 位置找到。\n", result - str1);
} else {
	printf("未找到子字符串。\n");
}

输出:

子字符串在 6 位置找到。

注意:

该函数依赖 strncasecmp 函数,请确保在使用该函数之前已经包含了 string.h 头文件。

C语言实现忽略大小写字符串查找函数 strncasecmp

原文地址: https://www.cveoy.top/t/topic/n5GP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录