字串處理函式

2021-05-07 23:23:30 字數 4127 閱讀 5884

(1)puts      向顯示器輸出字串

原型:int   puts(const char *s)     

標頭檔案:#include

返回值:成功返回輸出的字元數,失敗返回eof

puts()函式與printf()輸出字串的區別:

1.puts在輸出字串時,遇到'/0'會自動終止輸出,並將'/0'轉換為'/n'來輸出

2.printf在輸出字串時,遇到'/0' 只是終止輸出,並不會 '/0'轉換為'/n'來輸出

例子:#include

main()

輸出結果:

abcd     //(自動換行了,將『/0』轉換成『  /n』 了 )

1234    //(自動換行了,將『/0』轉換成『  /n』 了 )

5     //(返回值含有 『/0』,所以為num=5)

abcd1234

(2)strcat   字串連線    

strcat能夠將字串2連線到字串1的後面。要注意的是字串1必須能夠裝下字串2。連線前,兩串均以'/0'結束,連線後,串1的'/0'被取消,新串最後加『'/0'

原型:char  *strcat(char *s1, char *s2)     結果放在字串1中

標頭檔案:#include

strlen   字串長度

標頭檔案:#include

原型:int strlen(const char *s);

返回值:返回字串實際長度     不包含『/0』 在內

例子:#include

#include

main()

輸出結果:

sizeof(a) = 10

strlen(a) = 8  //( strlen()為有效字元的長度,不含'/0')

abcd1234

(3)  strcpy   字串拷貝

標頭檔案:#include

原型:  char *strcpy(char *s1, char *s2)

注:strcpy將字串2,拷貝到字元陣列1中去,要注意,字元陣列1必須足夠大,拷貝時'/0'一同拷貝,不能使用賦值語句為乙個字元陣列賦值。

例子:

#include

#include

main()

輸出:

123   //將  『/0』也拷貝過去  遇到 『/0』結束  所以只輸出123沒有d

(4)strcmp    字串比較

標頭檔案:#include

函式原型:int strcmp(char *s1, char *s2)

返回值: 返回int型的整數

strcmp對兩串從左向右逐個字元比較(ascll嗎),直到遇到不同字元或'/0'為止。若s1大於s2返回正整數1,若s1小於s2返回負整數-1,若s1等於s2返回0。

要注意字串比較不能用"= =",必須用strcmp.

例子:#include

#include

main()

輸出:0 

(5)sprintf與fprintf區別:

注意:這兩個函式都不是輸出

例子:#include

main()

sprintf(buffer, "i love my mother!");

printf("%s/n", buffer);

fprintf(fp, "%s", a);

for(i=0; i<3; i++)

fclose(fp);

}輸出:

i love my mother!

檔案wan中內容為:

abcdi love my mother!i love my mother!i love my mother!   //內容沒有覆蓋跟在後面

sprintf   格式化字串複製

標頭檔案:#include 

原型:int sprintf(char *s1,  格式, char *s2)    //格式這個引數可沒有,直接賦值

返回值:成功返回引數s1字串的長度,失敗返回-1

sprintf會把引數s2字串轉換為格式化資料,然後將結果複製到引數s1所指的字元陣列,直到出現字串結束符/0為止.

fprintf輸出到檔案中,sprintf輸出到字串中.

如: fprintf(fp,"%s",name);

fp為檔案指標    打到檔案裡面(file *)即:寫檔案

sprintf(buff,"%s",name);

buff為字元陣列  打到字元陣列裡面(char *)即:字元陣列賦值

(6) atoi與atof

例子:#include

#include

main()

輸出:b = 1234

c = 1234.000000

atoi   將字串轉換成整形數

標頭檔案: #include

原型:int atoi(const char *s)

返回值:返回轉換後的整形數

atoi會掃瞄引數s字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束符/0時結束轉換,並將結束返回.

atof   將字串轉換為浮點數

標頭檔案:#include

原型:float atof(const char *s)

返回值:返回轉換後的浮點數

atof會掃瞄引數s字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束符/0時結束轉換,並將結果返回.

(7) strtok    字串分割

標頭檔案:#include

原型:char *strtok(char *s1, char *s2)

strtok可將字串分割,當strtok在引數s1的字串中發現到引數s2的分割字元時則會將該字元改為/0字元。

在第一次呼叫時,strtok必須給予引數s字串,往後的呼叫則將引數s設定為null.(這句話一定要記住

例子:1:

#include

#include

main()

}輸出無數個:abc

2:#include

#include

main()

}只輸出兩個:

abcabc

3:#include

#include

main()

}輸出:

abcij

892kk

4:#include

#include

main()

}輸出:

aba134

ijcd

892kk

8)  strcpy()  memset()  memcpy()比較:

#include

#include

main()

輸出:i love my mother

i love my mother guwan

注意:memset()一般用於對字串的賦值,最好不要用於整型。   memset()是以位元組為單位賦值   整型4個位元組

memcpy(),memset()有3個引數

mem是一段記憶體,他的長度,必須你自己記住

str也是一段記憶體,不過它的長度,你不用記,隨時都可以計算出來

所以memcpy需要第三個引數,而strcpy不需要

strncmp(char *s1, char *s2, int n)

功能:比較字串s1和s2的前n個字元。

說明:當s1s2時,返回值》0     為乙個正數s2減去s2的值

而strcmp(char *s1, char *s2)返回值:相等為0, 大於為1, 小於為-1

注意之間的區別

字串處理函式

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

字串處理函式

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

字串處理函式

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