c语言中如何从一个字符串中查询是否有给定的关键词!
关键词是连续的,比如acbdefg中就没有abc 展开
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。
包含文件:string.h
函数名: strstr
函数原型:
extern char *strstr(char *str1, const char *str2);
语法:
strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此str1在str2首位置的地址。;如果str2不是str1的子串,则返回NULL。例程:
#include <stdio.h>
#include <string.h>
int main(){
const char *a = "abcdefgh";
const char *b = "abc";
if(strstr(a,b)!=NULL) printf("found!\n");
else printf("not found!\n");
return 0;
}
Please input str:
abcderfg
Please input search str:
de
Find!
Press any key to continue
#include<stdio.h>
#include<string.h>
main()
{
char str[80]={0},key[10]={0};
puts("Please input str:");
gets(str);
puts("Please input search str:");
gets(key);
if (strstr(str,key)!=NULL)
puts("Find!");
else
puts("Not Find!");
}
#include <stdlib.h>
#include <string.h>
int main(void)
{
const char *a = "abcdefgh";
const char *b = "abc";
int i;
int rval;
for (i = 0; i < strlen(a) - strlen(b); i++) {
rval = strncmp(a + i, b, strlen(b));
if (!rval) {
printf("found!\n");
return 0;
}
}
printf("not found!\n");
return 0;
}
万一abc是在中间的呢?比如ghiabcdef呢?~~~
难道这个不支持中间的吗?