字串(string):
一串字元,即若干個字元構成的乙個序列
c語言中沒有字串型別,只能用字元陣列表示字串,為了方便對字串的處理,c語言提供了很多簡化寫法
c語言規定,乙個合法的字串的最後乙個字元必須為'\0',即'\0'為字串結束標誌
char a[5]=;
char b[5]=;
在執行標準輸入(比如呼叫scanf或getchar)時,我們鍵入的字元在我們按下回車鍵後會進入標準輸入緩衝區中,scanf這些函式只是從這個緩衝區中取走相應型別的資料,如果呼叫函式時這個緩衝區中沒有任何資料,這些函式會等待使用者按鍵輸入;如果緩衝區中有資料,但不是scanf函式所期望型別的資料,那麼scanf函式就會立即失敗返回,否則會直接取走相應的資料,不會等待
型別強行轉換:
(型別)
int a=8;
char b;
b=a;
指標型別轉換:
不同基型別指標可以任意轉型
void型指標可以用來表示一切型別的指標(一切皆空),void*和其他型別指標之間可以自動轉型
scanf(「%c」)
在資料輸入時,如果輸入有誤,往往需要清空緩衝區,以保證下次輸入的準確可靠。
在linux系統中,有時會慣性思維,使用在windows程式設計中常用的方法:
(1)fflush(stdin):
fflush()函式,不是標準c庫中的,只是標準c的擴充套件,所以在linux中,不行。
(2)rewind(stdin):
這個函式是將指標指向流的開始位置,但它是檔案io中的乙個函式,操作的是file型流。在linux中不行。
(3)getchar():
while(getchar()!=』\n』)
; 通過讀取stdin中的剩餘資料並丟棄,來清空緩衝區。getchar()一次讀乙個字元,在linux中,可行!
(4)setbuf(stdin,null):
通過呼叫函式,直接將緩衝區清空(置空或指空)。在linux中可行!(一次性)
(5)fgets():
char zmx[1024];
fgets(s,1024,stdin);
在linux 中,可行的方案,只有(3)、(4)、(5)
重點說明字串(字元陣列)
關於scanf和printf對於字元輸入輸出的一點小缺陷,scanf的 %c 在輸入時會將回車也當做字元,printf %s 輸出時會以 『\0』 位結束標誌,如果在字串中人為的加上 『\0』 ,那麼這個人為加上的』\0』後面的字串將無法正常顯示。
linux下清空緩衝區:
1、通過getchar():
while(getchar()!=』\n』)
; 2、setbuf(stdin,null):
通過呼叫函式,直接將緩衝區清空(置空或指空)。在linux中可行!(一次性)
3、通過fgets():
char zmx[1024];
fgets(s,1024,stdin);
C語言字串處理
字串 char str 20 char str1 5 str1 1 x str1 3 y int i 0 for i 0 i 5 i char str2 0表示字串結束 printf s str2 定義大小時,要比實際大1.存放 0 與字串相關的函式 需要匯入標頭檔案 include char st...
字串處理(c語言)
提交 統計 提問 題目描述 讀入兩個字串,字串除了數字還可能包括 e e 相加之後輸出結果,如果是浮點型,要求用科學計數法表示 最多包含10個有效數字 輸入描述 輸入包含多組測試資料。每組輸入佔兩行,每行乙個字串,測試資料保證字串的構成嚴格按照題目中的描述。輸出描述 輸出兩個數字相加的結果,每組輸出...
字串處理(c語言)
提交 統計 提問 題目描述 讀入兩個字串,字串除了數字還可能包括 e e 相加之後輸出結果,如果是浮點型,要求用科學計數法表示 最多包含10個有效數字 輸入描述 輸入包含多組測試資料。每組輸入佔兩行,每行乙個字串,測試資料保證字串的構成嚴格按照題目中的描述。輸出描述 輸出兩個數字相加的結果,每組輸出...