strcpy() 字串拷貝
char *strcpy(char *strdestination, const
char *strsource)
strcpy能把strsrc的內容複製到strdest,為什麼還要char * 型別的返回值?
為了實現鏈式表示式:int length = strlen( strcpy( strdest, 「hello world」) );
2. strncpy()
功能:把src所指由null結束的字串的前n個位元組複製到dest所指的陣列中。
說明:1. 如果src的前n個位元組不含null字元,則結果不會以null字元結束。
2. 如果src的長度小於n個位元組,則以null填充dest直到複製完n個位元組。
3. src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。
返回值:返回指向dest的指標。
對strncpy()函式來說,它意味著只能使用「n」個字元的空間,包括末尾的nul字元。strncpy()函式也恰好只拷貝「n」個字元。如果第二個引數沒有這麼多字元,strncpy()函式會用nul字元填充剩餘的空間。如果第二個引數有多於「n」個的字元,那麼strncpy()函式在還沒有拷貝到nul字元之前就結束工作了。這意味著,在使用strncpy()函式時,你應該總是自己在目標字串的末尾加上nul字元,而不要指望strncpy()函式為你做這項工作。
對strncat()函式來說,它意味著最多只能拷貝「n」個字元,如果需要還要加上乙個nul字元。因為你真正知道的是目標字串能存放多少個字元,所以通常你要用strlen()函式來計算可以拷貝的字元數。
函式strncpy()和strncat()之間的區別是「歷史性」的(這是乙個技術用語,指的是「它對某些人確實起到了一定的作用,並且它可能是處理問題的正確途徑,但為什麼正確至今仍然說不清楚」)。
1
char *strncpy(char * dest, const char * source, size_t count) 2 8
if (count)
9
14 }
15return(start);
16 }
對於strcpy和strncpy的區別?
(1): strncpy 從某種意義上說是安全的。只要n的長度不超過s1分配的實際長度,就不會造成記憶體越界。
(2): 如果n不超過s1的長度,strncpy會在s1的尾部自動新增null字元。
memcpy()
功能:從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中。
說明:
(1):source和dest所指記憶體區域不能重疊。
(2):如果目標陣列本身已有資料,執行memcpy()後,將覆蓋原有資料(最多覆蓋n)。如果要追加資料,則每次執行memcpy後,要將目標陣列位址增加到你要追加資料的位址。
(3):source和dest都不一定是陣列,任意的可讀寫的空間均可
返回值:返回指向dest的指標。
1
void *memcpy(void *dest, void *source, size_t count)
2
對於memcpy和strcpy的區別?
(1): 複製的內容不同。strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列、整型、結構體、類等。
(2):複製的方法不同。strcpy不需要指定長度,它遇到被複製字元的串結束符」\0」才結束,所以容易溢位。memcpy則是根據其第3個引數決定複製的長度。
(3):用途不同。通常在複製字串時用strcpy,而需要複製其他型別資料時則一般用memcpy。
strcat(), 字串的連線.
char *strcat(char *target,const char *source)
5.streql(), 判斷兩個字串是否相等.
int streql(char *str1,char *str2)
return((*str1==null)&&(*str2==null));
}
6.strchr(), 在字串中查詢某個字元.
char *strchr(const
char *string,int letter)
chrcnt(), 計算某個字元在字串中出現的次數.
int chrcnt(const
char *string,int letter)
8.strcmp(), 判斷兩個字串是否相等.
int strcmp(const char *str1,const char *str2)
if((*str1==*str2)&&(!*str1)) //same strings
return o;
else
if((*str1)&&(!*str2)) //same but str1 longer
return -1;
else
if((*str2)&&(!*str1)) //same but str2 longer
else
return((*str1>*str2)?-1:1);
}
字串和字串函式
字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...
字串和字串函式
1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...
字串函式
1 獲取字串的長度 length 2 判斷字串的字首或字尾與已知字串是否相同 字首 startswith string s 字尾 endswith string s 3 比較兩個字串 equals string s 4 把字串轉化為相應的數值 int型 integer.parseint 字串 lon...