C语言入门之查找子串问题
1. 什么是查找子串?
查找子串指的是在一个字符串中寻找另一个字符串的过程。在C语言中,一般通过库函数来实现查找子串的功能。
2. C语言中的查找子串函数
C语言标准库中提供了许多函数可以帮助我们寻找子串,常用的有strstr()和strcasestr()。
2.1 strstr()
strstr()函数可以在一个字符串中查找另一个字符串,它的原型如下:
char *strstr(const char *str1, const char *str2);
其中,str1是要查找的字符串,str2是要查找的目标子串。函数会返回str2在str1中第一次出现的位置的指针,如果未找到则返回NULL。
下面是一个例子:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50] = "hello world";
char str2[10] = "world";
char *p;
p = strstr(str1, str2);
if(p != NULL)
{
printf("%s\n", p);
}
else
{
printf("Not found\n");
}
return 0;
}
这里我们声明了两个字符串str1和str2,然后使用strstr()函数在str1中查找str2。如果找到,就将str2在str1中第一次出现的位置以后的所有字符串输出;如果未找到,就输出"Not found"。
2.2 strcasestr()
strcasestr()函数和strstr()函数类似,但它不区分大小写。它的原型如下:
char *strcasestr(const char *str1, const char *str2);
下面是一个例子:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50] = "hello world";
char str2[10] = "WORLD";
char *p;
p = strcasestr(str1, str2);
if(p != NULL)
{
printf("%s\n", p);
}
else
{
printf("Not found\n");
}
return 0;
}
这里我们同样使用了两个字符串str1和str2,不同的是这里我们查找的是str2忽略大小写后在str1中第一次出现的位置。
3. 总结
查找子串是一项常用的操作,C语言标准库提供了很多函数可以帮助我们完成这项操作。其中,strstr()函数可以在一个字符串中查找另一个字符串,strcasestr()函数和strstr()函数类似,但它不区分大小写。
示例1:查找子串在字符串中的位置
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50] = "hello world";
char str2[10] = "world";
char *p;
p = strstr(str1, str2);
if(p != NULL)
{
printf("%d\n", p - str1 + 1);
}
else
{
printf("Not found\n");
}
return 0;
}
示例2:查找子串忽略大小写后在字符串中的位置
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50] = "hello world";
char str2[10] = "WORLD";
char *p;
p = strcasestr(str1, str2);
if(p != NULL)
{
printf("%d\n", p - str1 + 1);
}
else
{
printf("Not found\n");
}
return 0;
}
以上两个示例都输出查找到的位置在字符串中的下标。注意,这里输出的下标从1开始,而不是从0开始。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言入门之查找子串问题 - Python技术站