就字串的拼接函式為例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...