關於C語言字串函式使用的一點心得

2021-09-20 01:50:03 字數 2180 閱讀 4135

就字串的拼接函式為例strcat.

原型:extern char *strcat(char *dest,char *src);

用法:#include

功能:把src所指字串新增到dest結尾處(覆蓋dest結尾處的'\0')並新增'\0'。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

舉例:

// strcat.c

#include #include

main()

上面的這段**可以沒有問題的輸出 golden global view。

但是這裡有如果這樣改呢:

// strcat.c

#include #include

main()

引數是符合它的要求2個指標引數的,但是這個程式卻執行不了。開始百思不得其解,為什麼引數的型別都正確但是傳不回自己想要的結果。這樣只能去看函式原型了。

strcat函式原型

char *strcat(char *strdest, const char *strscr) //將源字串加const,表明其為輸入引數  //向該字串的結束標誌』\0』。 while(*strdest++ = *strscr++) //是while((*strdest++ = *strscr++)!=』\0』)的簡化形式  //此處可以加語句*strdest=』\0』;有無必要? return address; //為了實現鏈式操作,將目的位址返回 } 

從這句話就知道為什麼了

while(*strdest++ = *strscr++)

null;

如果strdest是乙個指標,這裡的 *strdest 就是取乙個未知位址的值,這個是編譯器不能容忍的。但是為什麼當strdest是乙個陣列的時候可以呢,因為陣列等於給它分配連續位址。申請到的安全位址當然可以使用了。當然我們也可以寫乙個傳入真正的以指標為引數的字串拼接函式,下面是我自己寫的乙個函式原型:

char *strcatdemo2(char *str1, const char *str2) //將源字串加const,表明其為輸入引數  while(*str2)  *address = '\0'; return des; } 

在這個裡面給指標address 申請了空間來存放2個字串的東西,注意,這裡要多申請乙個,因為字串要求乙個』\0』結尾。使用就這樣使用了:

int main(int argc, char *ar**)

上面寫的那個就類似於c#裡面字串相加的功能了。

其實大多數c語言裡面的字串都是,乙個字元陣列引數,乙個字元指標引數來使用的。下面就是這些東西的原型,可以好好看下,避免以後犯錯。

strcat函式原型:

char *strcat(char *strdest, const char *strscr) //將源字串加const,表明其為輸入引數  //向該字串的結束標誌』\0』。 while(*strdest++ = *strscr++) //是while((*strdest++ = *strscr++)!=』\0』)的簡化形式  //此處可以加語句*strdest=』\0』;有無必要? return address; //為了實現鏈式操作,將目的位址返回 } 

strcpy函式原型:

char *strcpy(char *strdest, const char *strscr)

*strdest = '\0'; //當strscr字串長度小於原strdest字串長度 return address; //時,如果沒有改語句,就會出錯了。 }

strcmp函式原型:

int strcmp (const char *str1,const char *str2)  return *str1-*str2; } 

strlen函式原型:

int strlen(const char *str)

return len; }

偽python愛好者,正宗測試實踐者。

關於C語言字串指標的一點點總結

一直在看指標的資料,今天實踐了一次字串指標的操作,做乙個簡單的總結。如下,char x abcd 宣告乙個字元型別的指標x 指向乙個字串需要特別注意的地方為 1 指標型別為char 指標的型別決定了這個指標指向資料的型別 2 指標變數 x 自身是有變數位址的,也就是說 x 變數作為乙個變數,有自己的...

2016 3 21 關於字串的一點總結

今天重點學習了一下關於字串的一些知識點,總結一下如下 可以利用這個特性判斷字串是否到末尾了。假設有字元陣列str,下面的while 可以判斷字元陣列是否結束。int i 0 while str i a strcpy函式的原型char strcpy char strdest,const char st...

關於C語言字串

一 c語言中沒有獨立的字串型別。c語言中的字串其實是一串在記憶體中連續的字元 且有乙個結束標識 0。0 0 含義 字串的結尾標識。要保證字串末尾要有 0 二 三種定義方式 1.字元陣列 儲存在棧區 棧區可以修改 注意 a.保留足夠的空間用於儲存 0 b.字元陣列可以直接用 字串字面值 直接初始化 c...