‘壹’ c语言 strstr和strrpl库函数的作用是什么
标准C语言实现下列标准库函数,设计中不得使用其他库函数。
strstr库函数:
char *strstr(char *str1,char *str2);
在字符串str1中,寻找字串str2,若找到返回找到的位置,否则返回NULL。
#include <iostream>
char *strstr(const char *str1, const char *str2);
char *strstr(const char *str1, const char *str2)
{
char *s1, *s2;
assert ((str1 != (char *)0) && (str2 != (char *)0));
/* 空字符串是任务字符串的子字符串 */
if ('\0' == *str2)
{
return ((char *)str1);
}
while (*str1)
{
s1 = (char *)str1;
s2 = (char *)str2;
while ((*s1 == *s2) && *s1 && *s2)
{
s1++;
s2++;
}
if ('\0' == *s2)
{
return ((char *)str1);
}
str1++;
}
/* 查找不成功,返回NULL */
return ((char *)0);
}
int main(int argc,char *argv[])
{
char a[20]="abcde";
char b[20]="bc";
printf("%s\n", strstr(a,b));
system ("pause");
return 0;
}
strrpl库函数:
/* 把 s 中的字符串 s1 替换成 s2 */
char *strrpl(char *s, const char *s1, const char *s2)
{
char *ptr;
while (ptr = strstr(s, s1)) /* 如果在s中找到s1 */
{
memmove(ptr + strlen(s2) , ptr + strlen(s1), strlen(ptr) - strlen(s1) + 1);
memcpy(ptr, &s2[0], strlen(s2));
}
return s;
}
‘贰’ 请问C语言中strstr(strcat(str1,str2),str3)是什么意思
strstr(strcat(str1, str2), str3);用于将str2连接到str1后面,构成新的字符串,然后在新字符串中查找包含str3的位置,
同时将该位置以后的字符串整个返回。
strcat(str1, str2)是将str2连接到str1末尾,由于strcat没有做字符串长度检查,必须保证传入的str1的剩余空间能够容纳
下str2,比如:
char str1[100] = "Hello";
char str2[] = world;
那么strcat(str1, str2)返回的结果是:Helloworld
但如果str1长度只有"Hello",则会出现不可预料的错误。
strstr(str1, str2)则会在str1中查找str2,同时返回剩下的字符串,
比如:
char str1[] = "Hello";
char str2[] = "e";
则strstr(str1, str2)返回结果为: ello
‘叁’ 关于C语言中strstr()函数的使用
因为这个函数是查找匹配的子字符串,如果没有找到完全匹配的就往回空
所以p
==
NULL
cout<<p;就是
cout
<<NULL;这个肯定会挂的
正确的做法就是
if(p)
cout
<<p;
else
cout<<"not
match"<<endl;
‘肆’ C语言strstr()函数
循环,每次从第一个字符串中取出长度与第二个字符串相等的字符串(N个),进行比较,若不等则再从第二个字符开始取N个,再与第二个比较,可以使用指针来进行操作,指向字符串首地址,若第一次比较不对则指针地址加1,指向第二个字符
‘伍’ C语言函数strstr的函数原型extern char *strstr(char *str1, char *str2);
extern 定义在前面
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
extern "C"的作用是,告诉C++编译器,下面的代码按照C的方式进行编译
我不是不懂extern修饰符的含义,我是问,为什么函数原型前面加一个extern修饰符?
不是很清楚吗 有这个表示 是说明 他在别的文件 里面有定义 编译器 要知道 你在别的文件中定义 使用 但是要在别的文件里面使用它 不告诉编译器 他知道 嘛 你知道不管用
‘陆’ string类型用法中有类似C语言里strstr的用法吗
可以把string类型,转成c语言的str类型,再使用strstr函数即可。
const char* ptr = string.c_str();
str = strstr(ptr)
‘柒’ strstr函数的用法。。。。。。。。。。。。。。。
C++函数原型:
const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );
C函数原型:
char * strstr ( const char *, const char * );
a字符串里 查看是否有b字符串,
有则 从首次发现b字符串处 返回 a字符串。
没有则输出 null
例子:
char st[]="abc 1234 xyz";
printf("%s",strstr(st,"34") );
打印出:
34 xyz
(7)c语言strstr用法扩展阅读
#include<syslib.h>
#include<string.h>
main()
{
char*s="GoldenGlobalView";
char*l="lob";
char*p;
clrscr();
p=strstr(s,l);
if(p)
printf("%s",p);
else
printf("NotFound!");
getchar();
return0;
}
//功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”
(假设xxx和yyy都是一个未知的字串)
char*s=”string1onexxxstring2oneyyy”;
char*p;
p=strstr(s,”yyy”);
if(p!=NULL)
printf(“%s”,p);
else
printf("notfound ");
‘捌’ C语言 寻找字符串!要求:用strstr函数。
//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[80],s2[70];
scanf("%s",s1); /*输入第一个字符串,以回车结束*/
fflush(stdin);
scanf("%s",s2); /*输入第二个字符串,以回车结束*/
printf("%d",strstr(s1,s2)-s1+1); /*输出结果*/
return 0;
}
//---------------------------------------------------------------------------
‘玖’ C语言中,strstr函数的功能是什么不用库函数,自己写怎么写
C语言中,strstr函数的功能是寻找字符串中子串出现的位置,自己写的步骤如下。
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。