c語言strchr函數_strchr函數_strchr函數實現

飛來科技  發布時間:2017-02-18 07:53:26

本文關鍵詞:strchr函數

strchr函數

strcpy函數,作用是將一個字符串的字符復制到另一個字符串中

char*strcpy(char*destination,constchar*source)

{

while(*destination++=*source++);//看這一句話寫的,精煉間斷而又讓人一目了然

//我用while寫肯定是要三條語句,循環變量,賦值,遞增,唉。strchr函數。。這就是菜鳥啊

return(destination-1);

}

strcat函數,作用是將一個串的內容追加到另一個串上

char*strcat(char*target,constchar*source)

{

char*original=target;

while(*target)//這里可以看出指針和數組下標的不同,一直都覺得指針式很有優勢的

target++;

while(*target++=*source++);

return(original);//注意到與上面一個函數返回的不同

}

strncat函數,這個不常用,作用是給字符串追加了N個字符

char*strcat(char*destination,constchar*source,intn)

{

char*original=destination;

inti=0;

while(*destination)

destination++;

while((i++<n)&&(*destination++=*source++));//我忍不住再一次贊嘆一下這個循環語句

//這個容錯性的想到也很牛,只要n為負數,就將目標字符串改為空

if(i>n)

*destination=NULL;

return(original);

}

strlwr和strupr函數這兩個函數實現起來比較簡單,就不列了:)

str_index函數作用是返回索引到串的首次出現

intstr_index(constchar*string,charletter)

{

char*original=string;

while((*string!=letter)&&(*string))

string++;

return(string-original);//這個返回方法,沒有一定功力估計很難想出來,至少腦子里不會首先會想到這樣寫

}

strrchr函數也是不常用的函數作用是搜索字符在字符串中的末次出現

char*strrchr(constchar*string,charletter)

{

char*ptr=NULL;

while(*string)//這個邏輯在很多地方都有用

{

if(*string==letter)

ptr=string;

string++;

}

return(ptr);

}

strchr函數作用是獲取字符串中第一次出現某個字符

char*strchr(constchar*string,charletter)

{

while((*string!=letter)&&(*string))

string++;

return(string);

}

strr_index函數作用是返回指向字符串末次出現的索引

intstrr_index(constchar*string,charletter)

{

char*original=string;

char*ptr=NULL;

while(*string)

{

c語言strchr函數_strchr函數實現_strchr函數

if(*string==letter)

ptr=string;

string++

}

return((*ptr)?ptr-original:string-original);//要么返回末次出現的索引,要么返回字符串的長度

}

charcnt函數作用是計算字符串中字符出現的次數

intcharcnt(constchar*string,charletter)

{

intcount=0;

while(*string)

if(*string==letter)

count++;

return(count);

}

strrev函數作用是將字符串內容反轉

char*strrev(char*string)

{

char*original=string;

char*forward=string;

chartmp;

while(*string)

string++;

while(forward<string)//邏輯和交換兩個數差不多

{

temp=*(--string);

*string=*forward;

*forward++=tmp;

}

return(original);

}

strset函數作用是將某特定字符賦給字符串相當于用某一個字符重置字符串不是很難的函數:)

strcmp函數作用是比較兩個字符串相同返回0,第一個大返回-1,第二個大返回1

intstrcmp(constchar*s1,constchar*s2)

{

while((*s1==*s2)&&(*s1))//這個比較的方式很簡練吧,也很有邏輯

{

s1++;

s2++;

}

if((*s1==*s2)&&(!*s1))

return(0);

elseif((*s1)&&(!*s2))

return(-1);

elseif((!*s1)&&(*s2))

return(1);

else

return((*s1>*s2)?-1:1);

}

strncmp函數作用是比較兩個字符串的前N個字符實現和上面的函數很類似只是要添加一個控制變量控制下長度:)

strdup函數作用是復制字符串的內容

strdup(constchar*s1)

{

char*ptr;

if((ptr=malloc(strlen(s1)+1)))

strcpy(ptr,s1);

return(ptr);

}

strspn函數作用是從給定字符序列中查找字符的首次出現

size_tstrspn(constchar*s1,constchar*s2)//這個函數我看了很久才明白是什么意思,比如第一個參數傳abcDef,第二個傳cbA,//按照順序查找第一個字符串,可以找到第一個沒有在第二個字符串中出現的字符是'D'

//返回這個字符在第一個字符串中的索引,也就是3,另外,為什么不用int而用size_t做

//返回值,是因為site_t是unsignedint,也就是正數

{

inti,j;

strchr函數_strchr函數實現_c語言strchr函數

for(i=0;*s1;i++,s1++)

{

for(j=0;s2[j];j++)

if(*s1==s2[j])

break;

if(s2[j]==NULL)

break;

}

return(i);

}

strstr函數作用是在字符串中查找子字符串雖然返回值是char*但是這個函數應該在判斷有沒有找到子字符串情況下用的多些

char*strstr(constchar*s1,constchar*s2)

{

inti,j,k;

for(i=0;s1[i];i++)

for(j=i,k=0;s1[j]==s2[k];j++,k++)

if(!s2[k+1])

return(s1+i)

return(NULL);

}

strstr_cnt函數作用是計算字符串出現的次數實現差不多是strstr和cnt的組合:)

substring_index函數作用是給子字符串獲取索引只要將strstr的返回值改成i就可以了:)

r_strstr函數作用是獲取子字符串最右端出現和strstr差不多然后參照一般的查找最右端的函數:)

strstr_rem函數作用是從字符串中刪除子字符串

char*strstr_rem(char*string,char*substring)//我沒有仔細看這個函數,我有點懶,嘿嘿,但是按照上面的strstr在找到字符串后進行

//進行替換,具體過程沒看列出來可以學習

{

inti,j,k,loc=-1;

for(i=0;string[i]&&(loc==-1);i++)

for(j=i,k=0;string[j]==substring[k];j++,k++)

if(!substring[k+1])

loc=i;

if(loc!=-1)

{

for(k=0;substr[k];k++);

for(j=loc;i=loc+k,string[i];j++,i++)

string[j]=string[i];

string[i]=NULL;

}

return(string)

}

strstr_rep函數作用是用另一個字符串代替子字符串

char*strstr_rep(char*source,char*old,char*new)

{

char*original=source;

chartemp[256];

intold_length=strlen(old);

inti,j,k,location=-1;

for(i=0;source[i]&&(location==-1);i++)

for(j=i,k=0;source[j]==old[k];j++,k++)

if(!old[k+1])

location=i;

if(location!=-1)

{

for(j=0;j<location;j++)

temp[j]=source[j];

for(i=0;new[i];i++,j++)

temp[j]=new[i];

for(k=location+old_length;source[k];k++,j++)

temp[j]=source[k];

temp[j]=NULL;

for(i=0;source[i]=temp[i];i++);

}

return(original);

}

為您推薦:strchr函數 strchr函數實現

本文來自互聯網,由機器人自動采編,文章內容不代表本站觀點,請讀者自行辨別信息真偽,如有發現不適內容,請及時聯系站長處理。

    相關閱讀
    江苏快三开奖结果