『壹』 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。