緩衝區
在資料輸入時,如果輸入有誤,往往需要清空緩衝區,以保證下次輸入的準確可靠。
在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)
字串(string):
一串字元,即若干個字元構成的乙個序列
c語言中沒有字串型別,只能用字元陣列表示字串,為了方便對字串的處理,c語言提供了很多簡化寫法
c語言規定,乙個合法的字串的最後乙個字元必須為'\0',即'\0'為字串結束標誌
char a[5]=;
char b[5]=;
在執行標準輸入(比如呼叫scanf或getchar)時,我們鍵入的字元在我們按下回車鍵後會進入標準輸入緩衝區中,scanf這些函式只是從這個緩衝區中取走相應型別的資料,如果呼叫函式時這個緩衝區中沒有任何資料,這些函式會等待使用者按鍵輸入;如果緩衝區中有資料,但不是scanf函式所期望型別的資料,那麼scanf函式就會立即失敗返回,否則會直接取走相應的資料,不會等待
字元陣列
1.字元陣列:
陣列中元素的是字元型別。
字元表示:『 字元 』
字串: 「字串」
2.初始化方式:
(1)逐個賦值: 注意加『\0』結束
char ch[6];
ch[0]=『h』;
ch[1]=『e』;
ch[2]=『\0』;
ch[3]=『l』;
ch[4]=『o』;
ch[5]=『\0』;
(2)用字串常量賦值
char ch[6]=;
char ch[6]="hello";
char ch="hello";
3.輸出方式:
(1)輸出逐個字元 %c
(2)輸出整個字串 %s
4.與字串處理相關的函式
#include
strcpy(字串拷貝)
strncpy(字串拷貝,可以指定要拷貝的位元組數)
strcat(字串連線)
strlen(求字串長度,不包括'\0')
strcmp(比較兩個字串的大小,按字典順序,大小寫敏感), strncmp(比較兩個字串開頭n個字元部分的大小,大小寫敏感)等
注意:strcpy,strncpy,strcat這些函式很危險,它們不會檢查越界訪問(只認『\0』),這個工作由呼叫者負責,一要保證目標緩衝區(buffer)大小充足
緩衝區(buffer):一塊記憶體空間
型別強行轉換:
(型別)
int a=8;
char b;
b=a;
指標型別轉換:
不同基型別指標可以任意轉型
void型指標可以用來表示一切型別的指標(一切皆空),void*和其他型別指標之間可以自動轉型
嵌入式每日學習心得2017 07 08
linux系統管理技術 linux系統的使用方式 1 桌面環境操作 傻瓜化,但功能不夠強大,某些操作效率很低甚至無法完成 2 shell命令 專業高效,但非常不直觀友好,學習難度大,需要記憶命令 要成為unix linux系統骨灰級玩家,必須常用掌握shell命令!常用的桌面環境 gnome kde...
嵌入式每日學習心得2017 07 10
對於linux相關命令,再次作一點總結,今天是上半部分,明天是下半部分 關於布置的小問題 問題1更改使用者名稱 usermod l newusername username 問題2更改主機名 hostname newname vi etc sysconfig network 問題3su和su 的區別...
嵌入式每日學習心得2017 07 13
進製 表數方式,是幾進製,就逢幾進一 十進位制 逢十進一 9 0 123 10 百 十 個 1 3 0 二進位制 逢二進一 1 0 2 八進位制 逢八進一 7 0 0123 八 十 3 8 0 2 8 1 1 8 2 八 二 001 010 011 十六進製制 逢十六進一 f a 9 0 0x321...