字串和字串函式

2021-09-01 08:19:26 字數 1691 閱讀 7364

字元輸入輸出

getchar();

putchar();

ch=getchar();

putchar(ch)

字串函式

字串輸入

建立儲存空間 :接受字串輸入首先需要建立乙個空間來存放輸入的字串。

char * name;

scanf("%s",name);

上述的用法可能會導致程式異常終止。

使用字串陣列 可以避免上述問題

char name[81];

scanf("%s",name);

gets()函式:get string函式,讀取字串直至乙個換行符 '\n',回車會導致換行符的產生。讀取換行符之前的所有字元然後加上乙個空字元'\0',然後把這個字串交給呼叫它的程式。

gets()函式構造 :

char * gets(char * s)

gets()返回的指標和傳遞給它的是同乙個指標。輸入字串只有乙個備份,它作為函式引數傳遞過來的位址中;gets()函式可能有2個返回值,如果一切順利,它返回的是讀入字串的位址。若是有錯誤,它返回的是乙個空位址,叫做空指標。

gets()缺點:它不檢查預留儲存區是否能夠容納實際輸入的資料,多出的字元溢位到相鄰的記憶體區。

fgets()可以指定最大的讀入字元數,為檔案i/o設計。

fgets(char *ptr,int size,char *input)
size來說明最大讀入字元數,會讀取size-1個有效字元。

input來指定說明讀取那乙個檔案;從鍵盤讀取資料時,可以使用stdin作為引數,接受鍵盤輸入。fgets()函式會把換行符儲存到字串中,所以每次顯示的時候都會顯示換行符。

scanf()函式:獲取單詞而不是獲取字串;scanf()使用2種機制來決定輸入結束,字串從遇到的第乙個非空白字元開始,如果使用%s,字串讀到下乙個空白字元(但是不包括這個空白字元);如果指定了寬度如%10s,該函式會讀入10個字元或者遇到空白字元,二者中先滿足的就終止。

字串顯示

puts():給出字串引數的位址,顯示字串時會自動地在其後面新增乙個換行符。puts(字元陣列)會輸出字元陣列內容,但是由於沒有'\0',他會一直輸出下去,直至找到乙個'\0';

fputs():面向檔案的版本。需要第二個引數來說明要寫的檔案,可以使用stdout作為引數來進行輸出顯示,同時fputs()不會自動新增換行符。

gets()丟掉輸入裡面的換行符  puts():新增換行符

fgets()儲存輸入中的換行符   fputs()不為輸出新增換行符

自定義字串輸入輸出函式:

主要是利用getchar()和putchar()來定製輸入輸出函式 

#includevoid put1(const char *);

intmain()

void put1(const char * p)

printf("\n%d",i);

}

字串函式:string.h給出了函式原型

strcmp():用來比較字串的內容,不是位址 ;同時它比較的是字串陣列中空字元之前的字元,所以可以用來比較不同長度的字串陣列的內容是否相同。

字元不相同的話,該函式返回非零值,若是相同,則返回0值。

字串和字串函式

1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...

字元和字串函式

求字串長度 strlen size t strlen const char str 返回字串中 0 前面出現字元的個數模擬實現 計數器方式 int my strlen const char str return count 遞迴方式 int my strlen const char str 指標 指...

C語言 字串和字串函式

輸入 gets 函式 1.gets 從標準輸入裝置讀取字串,以回車結束讀取,使用 0 結尾,回車符 n 被捨棄沒有遺留在緩衝區。2.可以用來輸入帶空格的字串。3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。fgets 和 fputs 函式 1.fgets函式的第2個引數指明了...