字串處理函式

2021-07-15 11:47:12 字數 2555 閱讀 1763

puts()函式:用來向標準輸出裝置(螢幕)寫字串並換行, 其呼叫格式為: puts(s); 其中s為字串變數(字串陣列名或字串指標),puts()函式的作用與語printf("%s\n", s)相同,將緩衝區的字元輸出到標準輸出,遇到空字元截至,並且在末尾新增乙個換行符。。

gets():函式用來從標準輸入裝置(鍵盤)讀取字串直到回車結束, 但回車符不屬於這個字串。其呼叫格式為: gets(s); s為字串變數(字串陣列名或字串指標)。gets(s)函式與scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s) 函式輸入字串時存在乙個問題, 就是如果輸入了空格會認為輸入字串結束, 空格後的字元將作為下乙個輸入項處理, 但gets() 函式將接收輸入的整個字串直到回車為止。

getchar()函式:只能用於單個字元的輸入,一次輸入乙個字元。程式的功能是輸入乙個字元,顯示乙個字元,回車換行,再輸入並顯示乙個字元。而執行時字元是連續輸入的,執行結果卻是正確的,這是因為輸入字元後,它們暫存於鍵盤的緩衝區中,然後由getchar函式從鍵盤緩衝區中乙個乙個的取出來,其呼叫格式為: getchar(c);

putchar()函式:只能用於單個字元的輸出,且一次只能輸出乙個字元,其呼叫格式為: putcahr(c);

scanf所有標量引數的前面必須加乙個「&」符號,陣列引數前面不需要加,如果陣列引數中出現了下標引用,即引數是陣列的某個具體的元素。scanf函式使用%s格式碼進行輸出字串時,中間不能包含空白。

為什麼下標檢查在c是一件很困難的事情。標準並沒有提出這個要求,最早的c編譯器並沒有檢查下標,最新的也不會檢查。

因為下標引用可以用於任意的指標,而不僅僅是陣列名。作用於指標的下標引用的有效性既依賴於該指標當時恰好指向的內容,也依賴於下標的值。c的下標檢查所涉及的開銷,比我們剛開始想的要多。編譯器必須在程式中插入指令,證實下標表示式的結果所引用的元素和指標表示式所指向的元素屬於同乙個陣列。這個比較操作需要程式中所有陣列的位置和長度方面的資訊,這將占用一些空間。當程式執行時,這些資訊必須進行更新,以反映自動和動態分配的陣列,這又將占用一定的時間。因此,即使是那些提供了下標檢查的編譯器通常也會提供乙個開關,允許去掉下標檢查。

標頭檔案:#include

(1)strcat()用來連線字串,其原型為:char *strcpy(char *dest,  char *src);把src所指的字串連線到dest所指的字串後面。

說明:使用時,dest所指的字串陣列足夠大,sizeof(dest)/sizeof(dest[0])>strlen(dest)+strlen(src);

(2)strcpy()用來複製字串,其原型為:char *strcpy(char *dest, const char *src);

函式說明:strcpy()會將引數src 字串拷貝至引數dest 所指的位址。

注意:如果引數 dest 所指的記憶體空間不夠大,可能會造成緩衝溢位(bufferoverflow)的錯誤情況,在編寫程式時請特別留意,或者用strncpy()來取代。

(3)strncpy()用來複製字串的前n個字元,其原型為:char * strncpy(char *dest, const char *src, size_t n);

函式說明:dest 為目標字串指標,src 為源字串指標。strncpy()會將字串src前n個字元拷貝到字串dest。不像strcpy(),strncpy()不會向dest追加結束標記'\0',這就引發了很多不合常理的問題。

注意:src 和 dest 所指的記憶體區域不能重疊,且 dest 必須有足夠的空間放置n個字元。

返回值:返回字串dest;

(4)strlen()是測試字串長度的函式,其原型為:strlen(陣列名)函式的值為字串內的實際長度,不包括\0;,例如:char str[10] = ,strlen(str) = 5;

(5)strcmp()函式是用來比較字串,其函式原型為:strcmp(str1,str2);對兩個字串按照ascii值的大小從左到右依次比較,直到遇到不同的字元或\0為止,如果字元相同,則相等,如果不同則按照第乙個不同的字元的比較結果為準。如果str1 = str2,則返回 0 ;如果 str1>str2則返回乙個正整數,否則返回乙個負整數。

(6)strlwr(字串)是用來將字串中大寫字母轉換為小寫字母。同理,strupr(字串)是將字串中小寫字母轉換為大寫字母的函式。

(7)strchr函式

函式功能:查詢乙個字元。在乙個字串中查詢乙個特定的字元。

函式原型:char *strchr(char const *str,int ch);

函式說明:strchr在字串str中查詢字元ch第一次出現的位置,找到後返回乙個指向該位置的指標。如果該字元不存在於字串中,則返回乙個null指標。注意:第二個引數是乙個整型值,但是,它包含了乙個字串值。

(8)strstr函式

函式功能:在乙個字串中查詢乙個字串

函式原型:char *strstr(char const *s1,char const *s2);

函式說明:strstr實現在s1中查詢整個s2第一次出現的位置,並返回乙個指向該位置的指標。如果s2並沒有完整的出現在s1的任何地方,函式返回乙個null指標。如果第二個字串是乙個空字串,函式返回s1。

字串處理函式

1 puts 向顯示器輸出字串 原型 int puts const char s 標頭檔案 include 返回值 成功返回輸出的字元數,失敗返回eof puts 函式與printf 輸出字串的區別 1.puts在輸出字串時,遇到 0 會自動終止輸出,並將 0 轉換為 n 來輸出 2.printf在...

字串處理函式

下面介紹幾個最常用的字串函式。格式 puts 字元陣列名 功能 把字元陣列中的字串輸出到顯示器。即在螢幕上顯示該字串。例7 12 include stdio.h main 從程式中可以看出puts函式中可以使用轉義字元,因此輸出結果成為兩行。puts函式完全可以由printf函式取代。當需要按一定格...

字串處理函式

字串處理函式標頭檔案 include strlen 字元陣列名 會返回引數中字元陣列中字串的不包含 0 的長度。strcat str1,str2 會將字串str2拼接到字串str1的後面,但是這裡有乙個問 題,如果str1的長度不夠大的話就會導致字串溢位,就會覆蓋字元 串str1之後的記憶體空間,可...