C语言中如何查找字符串?
发布网友
发布时间:2022-03-02 08:48
我来回答
共4个回答
热心网友
时间:2022-03-02 10:17
用strstr这个函数
包含文件:string.h
函数名: strstr
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。
源代码:
#include<stdio.h>
#include<string.h>//调用string.h中的strstr函数
void main(){
char ch1[255]="abcde";
char ch2[100]="cd";
char* ch;//用于接受返回值
if((ch=strstr(ch1,ch2))==NULL){//说明没有要找的字符串
printf("-1\n");
}else{//说明找到了那个字符串
printf("%d\n",ch-ch1+1);//cde的地址减去abcde的地址+1
}
}
热心网友
时间:2022-03-02 11:35
不用自己写,有一个函数叫strstr,原型是
char
*strstr(char
*str1,
char
*str2),功能是找出str2字符串在str1字符串中第一次出现的位置。
可以这样写:
char
*p=strstr(a,b);
if(NULL
!=
p)
{
//a中不存在b,添加相应代码
}
else
{
//a中存在b,添加相应代码
}
返回值p为a中第一次出现b的位置
这个函数要包含头文件string.h
热心网友
时间:2022-03-02 13:10
参考代码: #include int main(void){ char a[80]; char b[80]; char *p = a;//辅助变量p int count = 0;//用来记录子串出现的次数 printf("请输入主字符串:"); gets(a); printf("请输入要查找的子串:"); gets(b); while((p = strstr(p,b)) != NULL) { count ++; p++; } printf("子串出现的次数为%d次\n",count);return 0;}
热心网友
时间:2022-03-02 15:01
想了个效率比较低的:
1.fopen打开文件
2.fread每次读取一个字节和h(http的首字母)比较,成功了后再比较t,等等,如果都成功,说明http://匹配成功,然后将以后的字符读入到数组或文件中,同时用同样的方法检测.html字串。检测到.html字串就停止对数组或文件的写入。
如果有任何一个不匹配,重复步骤2(还得重新从比较h开始)
在怎么有效率也得遍历整个文件,我实在想不出什么别的更有效率的方法了。难道用哈希?散列?