嵌入式每日學習心得2017 07 21

2021-08-04 03:33:13 字數 1841 閱讀 2695

緩衝區

在資料輸入時,如果輸入有誤,往往需要清空緩衝區,以保證下次輸入的準確可靠。

在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...