c語(yǔ)言str函數(shù)全,C語(yǔ)言str用法

C語(yǔ)言中strstr()函數(shù)的使用分析

原型: char *strstr(const char *str1, const char *str2);

創(chuàng)新互聯(lián)公司是專業(yè)的大田網(wǎng)站建設(shè)公司,大田接單;提供成都做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行大田網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

#includestring.h

找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。返回該位置的指針,如找不到,返回空指針。

Returns a pointer to the first occurrence of strSearch in str, or NULL if strSearch does not appear in str. IfstrSearch points to a string of zero length, the function returns str.

代碼如下:

#include stdio.h

#include conio.h

#include string.h

#include stdlib.h

#pragma warning (disable:4996)

char *mystrstr(char *s1,char *s2);

int main(void)

{

char *s="Golden Global View";

char *l="ob"; ? //char *l=""

char *p;

system("cls");

p=mystrstr(s,l);

if (p!=NULL)

{

printf("%sn",p);

}

else

{

printf("Not Found!n");

}

getch();

return 0;

}

/*FROM 百科*/

char *mystrstr(char *s1,char *s2)

{

int n;

if (*s2) ? ? ? ? ? ? ? ? ? ? ?//兩種情況考慮

{

while(*s1)

{

for (n=0;*(s1+n)==*(s2+n);n++)

{

if (!*(s2+n+1)) ? ? ? ? ? ?//查找的下一個(gè)字符是否為''

{

return (char*)s1;

}

}

s1++;

}

return NULL;

}

else

{

return (char*)s1;

}

}

另一個(gè)實(shí)現(xiàn):

代碼如下:

char * ?strstr (buf, sub)

register char *buf;

register char *sub;

{

register char *bp;

register char *sp;

if (!*sub)

return buf;

while (*buf)

{

bp = buf;

sp = sub;

do {

if (!*sp)

return buf;

} while (*bp++ == *sp++);

buf += 1;

}

return 0;

}

又一個(gè)實(shí)現(xiàn):

代碼如下:

#include iostream

#include string

using namespace std;

//c語(yǔ)言實(shí)現(xiàn)strstr

const char* isSub(const char* str, const char *subs){

//特殊情況

if(!*subs)

return str;

const char* tmp=str;

while (*tmp!='')

{

//用于每次將父串向后移動(dòng)一個(gè)字符

const char* tmp1=tmp;

//記錄子串地址

const char* sub1=subs;

while (*sub1!=''*tmp1!='')

{

//若不相等則跳出,將父串后移一個(gè)字符

if (*sub1!=*tmp1)

break;

//若相等且子串下一個(gè)字符是末尾則是這個(gè)父串的子串

if (*sub1==*tmp1*(sub1+1)=='')

return tmp;

//若相等則繼續(xù)比較下一個(gè)字符

if (*sub1==*tmp1)

{

sub1++;

tmp1++;

}

}

tmp++;

}

return NULL;

}

int main(){

char* str1="ababcdddb";

char* str="";

const char *res=isSub(str1,str);

if (res!=NULL)

{

cout res endl;

}

else

cout "null" endl;

//cout isSub(str1,str) endl;

return 0;

}

C語(yǔ)言中,strstr函數(shù)的功能是什么?不用庫(kù)函數(shù),自己寫怎么寫?

C語(yǔ)言中,strstr函數(shù)的功能是尋找字符串中子串出現(xiàn)的位置,自己寫的步驟如下。

需要準(zhǔn)備的材料分別有:電腦、C語(yǔ)言編譯器。

1、首先,打開C語(yǔ)言編譯器,新建一個(gè)初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,輸入C語(yǔ)言代碼:。

int fun(char *a, char *b)

{

int i, j, alen = strlen(a), blen = strlen(b);

for (i = 0; i alen - blen + 1; i++)

if (a[i] == b[0]) {

for (j = 1; j blen; j++) if (a[i + j] != b[j])break;

if (j == blen)

return i;

}

return -1;

}

3、編譯器運(yùn)行test.cpp文件,此時(shí)成功實(shí)現(xiàn)了strstr實(shí)現(xiàn)了字符串查找。

c++中c_str()用法,越詳細(xì)越好。

應(yīng)該這樣用:

char c[20];?

string s="1234";

strcpy(c,s.c_str());

這樣才不會(huì)出錯(cuò),c_str()返回的是一個(gè)臨時(shí)指針,不能對(duì)其進(jìn)行操作。

語(yǔ)法: const char *c_str();

c_str()函數(shù)返回一個(gè)指向正規(guī)C字符串的指針, 內(nèi)容與本string串相同.,這是為了與c語(yǔ)言兼容,在c語(yǔ)言中沒有string類型,故必須通過(guò)string類對(duì)象的成員函數(shù)c_str()把string 對(duì)象轉(zhuǎn)換成c中的字符串樣式。

注意:一定要使用strcpy()函數(shù) 等來(lái)操作方法c_str()返回的指針。

擴(kuò)展資料:

關(guān)于上述用法種最好不要這樣用

const?char*?c;

std::string?s?=?"1234";

c?=?s.c_str();

std::cout??c??std::endl;?//輸出:1234

s?=?"abcd";

std::cout??c??std::endl;?//輸出:abcd

上面如果繼續(xù)用c指針的話,導(dǎo)致的錯(cuò)誤將是不可想象的,就如:1234變?yōu)閍bcd。

C語(yǔ)言strtol()函數(shù)用法?

C 庫(kù)函數(shù) - strtol():

C 標(biāo)準(zhǔn)庫(kù) - stdlib.h

描述

C 庫(kù)函數(shù) long int strtol(const char *str, char **endptr, int base) 把參數(shù) str 所指向的字符串根據(jù)給定的 base 轉(zhuǎn)換為一個(gè)長(zhǎng)整數(shù)(類型為 long int 型),base 必須介于 2 和 36(包含)之間,或者是特殊值 0。

strtol() 函數(shù)的聲明

long int strtol(const char *str, char **endptr, int base)

參數(shù)

str -- 要轉(zhuǎn)換為長(zhǎng)整數(shù)的字符串。

endptr -- 對(duì)類型為 char* 的對(duì)象的引用,其值由函數(shù)設(shè)置為 str 中數(shù)值后的下一個(gè)字符。

base -- 基數(shù),必須介于 2 和 36(包含)之間,或者是特殊值 0。

返回值

該函數(shù)返回轉(zhuǎn)換后的長(zhǎng)整數(shù),如果沒有執(zhí)行有效的轉(zhuǎn)換,則返回一個(gè)零值。

實(shí)例

下面的實(shí)例演示了 strtol() 函數(shù)的用法。

#include stdio.h

#include stdlib.h

int main()

{

char str[30] = "2030300 This is test";

char *ptr;

long ret;

ret = strtol(str, ptr, 10);

printf("數(shù)字(無(wú)符號(hào)長(zhǎng)整數(shù))是 %ld\n", ret);

printf("字符串部分是 |%s|", ptr);

return(0);

}

讓我們編譯并運(yùn)行上面的程序,

這將產(chǎn)生以下結(jié)果:

數(shù)字(無(wú)符號(hào)長(zhǎng)整數(shù))是

2030300

this is a test.

c語(yǔ)言 str函數(shù)

1、strcat()

此函數(shù)原型為 char *strcat(char *dest, const char *src).

功能為連接兩個(gè)字符串,把src連接到dest后面;返回dest地址

實(shí)現(xiàn)如下

[cpp] view plaincopy

char * strcat(char *dest,const char *src)

{

char* addr=dest;

while(*dest)//找到'\0'

{

dest++;

};

while(*dest++=*src++)

{};

return addr;

}

2、strcmp()

此函數(shù)的函數(shù)原型為 int strcmp(const char *str1, const char *str2).

功能為比較兩個(gè)字符串。

當(dāng)str1指向的字符串大于str2指向的字符串時(shí),返回正數(shù)。

當(dāng)str1指向的字符串等于str2指向的字符串時(shí),返回0。

當(dāng)str1指向的字符串小于str2指向的字符串時(shí),返回負(fù)數(shù)。

實(shí)現(xiàn)如下:

[cpp] view plaincopy

int strcmp(const char *str1, const char *str2)

{

while(*str1==*str2)

{

if(*str1=='\0')

return 0;

str1++;

str2++;

}

return *str1-*str2;

}

3、strcpy()

此函數(shù)原型為 char *strcpy(char* dest, const char *src)

功能為拷貝字符串內(nèi)容到目的串,把src所指向的內(nèi)容拷貝到dest

實(shí)現(xiàn)如下

[cpp] view plaincopy

char *strcpy(char *dest,const char *src)

{

//assert(dest!=NULLsrc!=NULL);

char *addr=dest;

while(*dest++=*src++);

return addr;

}

4、strlen()

此函數(shù)原型為unsigned in strlen(const char *str)

功能為返回字符串str的長(zhǎng)度(不包括'\0')。

實(shí)現(xiàn)如下:

[cpp] view plaincopy

unsigned int strlen(const char *str)

{

unsigned len=0;

while(*str!='\0')

{

len++;

str++;

}

return len;

}

5、strchr() strrchr()

char *strchr(char *str, char c)

功能為查找str中首次出現(xiàn)c的位置,如有有,則返回出現(xiàn)位置,否則返回NULL。實(shí)現(xiàn)如下:

[cpp] view plaincopy

char *strchr(char *str, char c)

{

while(*str!='\0'*str!=c)

{

str++;

}

return (*str==c? str: NULL);

}

char *strrchr(char *str, char c)

功能為查找str中最后一次出現(xiàn)c的位置,如有有,則返回出現(xiàn)位置,否則返回NULL。實(shí)現(xiàn)如下:

[cpp] view plaincopy

char *strrchr(char *str, char c)

{

char *p=str+strlen(str);//p指向最后一個(gè)字符

while(p!=str*p!=c)

p--;

if(p==str*p!=c)

return NULL;

else return p;

}

6、strcspn() strspn()

strcspn

原型:size_t strcspn(const char *pstr, const char *strCharset)

MSDN解釋為:在字符串pstr中搜尋strCharsret中所出現(xiàn)的字符,返回strCharset中出現(xiàn)的第一個(gè)字符在pstr中的出現(xiàn)位置。簡(jiǎn)單的說(shuō),若strcspn返回的數(shù)值為n,則代表字符串strCharsrt開頭連續(xù)有n個(gè)字符不包含在pstr內(nèi)的字符。

功能:返回后面字符串中第一個(gè)不在前者出現(xiàn)的下表。

7、strdup()

此函數(shù)原型為char *strdup(const char *str)

功能為拷貝字符串到新建的內(nèi)存,返回內(nèi)存指針。若失敗,返回NULL。要注意,返回的指針指向的內(nèi)存在堆中,所以要手動(dòng)釋放。

函數(shù)實(shí)現(xiàn):

[cpp] view plaincopy

char *strdup(const char *str)

{

char *p=NULL;

if(str(p=(char*)malloc(strlen(str)+1)))

strcpy(p,str);

return p;

8、strrev()

此函數(shù)的原型為char *strrev(char *str)

功能為反轉(zhuǎn)字符串,返回字符串指針。

函數(shù)實(shí)現(xiàn):

[cpp] view plaincopy

char *strrev(char *str)

{

if(str==NULL)

return NULL;

char *start=str;

char *end=str+strlen(str)-1;

char temp;

while(startend)

{

temp=*start;

*start=*end;

*end=temp;

start++;

end--;

}

return str;

}

9、strstr()

函數(shù)原型為char *strstr(const char str1, const char *str2)

功能為查找字符串str2在str1中出現(xiàn)的位置,找到則返回位置,否則返回NULL。

函數(shù)實(shí)現(xiàn):

[cpp] view plaincopy

char *strstr(const char str1, const char *str2)

{

int length1=strlen(str1);

int length2=strlen(str2);

while(length1=length2)

{

length1--;

if(!strncpy(str1,str2,length2))//比較前n個(gè)字符串,類似strcpy

return str1;

str1++;

}

return NULL;

}

c語(yǔ)言中str是什么意思

str -- 通常,程序員喜歡用它作字符串變量名。它是 string(英文詞、字符串的縮寫)

Str函數(shù),返回代表一數(shù)值的 Variant(String)。語(yǔ)法Str(number)必要的 number 參數(shù)為一 Long,其中可包含任何有效的數(shù)值表達(dá)式。說(shuō)明當(dāng)一數(shù)字轉(zhuǎn)成字符串時(shí),總會(huì)在前頭保留一空位來(lái)表示正負(fù)。

擴(kuò)展資料:

如果 number 為正,返回的字符串包含一前導(dǎo)空格暗示有一正號(hào)。使用 Format 函數(shù)可將數(shù)值轉(zhuǎn)成必要的格式,如日期、時(shí)間、貨幣或其他用戶自定義格式。與 Str 不同的是,F(xiàn)ormat 函數(shù)不包含前導(dǎo)空格來(lái)放置 number 的正負(fù)號(hào)。

注意 Str 函數(shù)只視句點(diǎn) (.) 為有效的小數(shù)點(diǎn)。如果使用不同的小數(shù)點(diǎn)(例如,國(guó)際性的應(yīng)用程序),可使用 CStr 將數(shù)字轉(zhuǎn)成字符串。

文章標(biāo)題:c語(yǔ)言str函數(shù)全,C語(yǔ)言str用法
網(wǎng)頁(yè)URL:http://muchs.cn/article18/hcjggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、面包屑導(dǎo)航、云服務(wù)器、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司