C學習筆記(7)--- typedef,輸入輸出

1.typedef:html

 

C 語言提供了 typedef 關鍵字,您可使用它來爲類型(type)取一個新的名字。linux

好比:正則表達式

 

typedef unsigned char BYTE;編程

 

而後你就能夠把BYTE當成unsigned char 的縮寫去使用:數組

 

BYTE b1,b2;安全

 

sub:按照慣例,定義時會大寫字母,以便提醒用戶類型名稱是一個象徵性的縮寫,但您也可使用小寫字母.編程語言

 

和#define的區別:函數

#define 是 C 指令,用於爲各類數據類型定義別名,與 typedef 相似,可是它們有如下幾點不一樣:spa

1.typedef 僅限於爲類型定義符號名稱,#define 不只能夠爲類型定義別名,也能爲數值定義別名,好比您能夠定義 1 爲 ONE。orm

2.typedef 是由編譯器執行解釋的,#define 語句是由預編譯器進行處理的。

3.#define可使用其餘類型說明符對宏類型名進行擴展,但對 typedef 所定義的類型名卻不能這樣作.

4.在連續定義幾個變量的時候,typedef 可以保證定義的全部變量均爲同一類型,而 #define 則沒法保證.

 

2.輸入輸出(Input and output):

 

熟悉任意一種編程語言的同窗都大概知道怎麼回事了,不過咱們對於C的一些特性進行稍微深刻的分析。

 

 

a.

C 語言中的 I/O (輸入/輸出) 一般使用 printf() 和 scanf() 兩個函數。

 

scanf() 函數用於從標準輸入(鍵盤)讀取並格式化, printf() 函數發送格式化輸出到標準輸出(屏幕)。

 

sub:

int i; char c; scanf("%d%[^' '^'\n']", &i, &c);

若是遇到輸入比較複雜的狀況,儘可能用正則表達式去解決。(由於輸入流是有緩衝區的,咱們輸入的字符存儲在那,而後再賦值給咱們的變量。)

 

b.

stdio.h 是一個頭文件 (標準輸入輸出頭文件) and #include 是一個預處理命令,用來引入頭文件。 當編譯器遇到 printf() 函數時,若是沒有找到 stdio.h 頭文件,會發生編譯錯誤。

return 0; 來結束主函數(main function)

 

c.

和相對高級一點的語言相比,c的 printf() 函數的引號中使用 "%d" (整型) 來匹配整型變量 testInteger 並輸出到屏幕。:

printf("Number = %d", testInteger);   

固然,不一樣的類型有不一樣的標識;format 能夠是一個簡單的常量字符串,可是您能夠分別指定 %s、%d、%c、%f 等來輸出或讀取字符串、整數、字符或浮點數。還有許多其餘可用的格式選項,能夠根據須要使用。

 

d. 

int getchar(void) 函數從屏幕讀取下一個可用的字符,並把它返回爲一個整數。這個函數在同一個時間內只會讀取一個單一的字符。您能夠在循環內使用這個方法,以便從屏幕上讀取多個字符。

int putchar(int c) 函數把字符輸出到屏幕上,並返回相同的字符。這個函數在同一個時間內只會輸出一個單一的字符。您能夠在循環內使用這個方法,以便在屏幕上輸出多個字符。

 

e.

char *gets(char *s) 函數從 stdin 讀取一行到 s 所指向的緩衝區,直到一個終止符或 EOF。

int puts(const char *s) 函數把字符串 s 和一個尾隨的換行符寫入到 stdout

 

sub:linux系統下須要這樣編譯:不支持 gets 與 puts, 須要用 fgets 和 fputs。須要注意的是,gets 和 puts都不安全,儘可能都用fgets 和 fputs替代!

這是由於gets函數因爲沒有指定輸入字符大小,因此會無限讀取,一旦輸入的字符大於數組長度,就會發生內存越界,從而形成程序崩潰或其餘數據的錯誤。

 

 

 

 

 引用:https://www.runoob.com/cprogramming/c-typedef.html

https://www.runoob.com/cprogramming/c-input-output.html

相關文章
相關標籤/搜索