- 相關推薦
C語言中函數的區分有哪些
C語言的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。以下是小編為大家搜索整理的C語言中函數的區分,希望能給大家帶來幫助!
C語言中函數的區分有哪些
首先,這兩個函數不是C標準庫中的函數,
int getch(void) //從標準輸入讀入一個字符,當你用鍵盤輸入的時候,屏幕不顯示你所輸入的字符。也就是,不帶回顯。
int getche(void) //從標準輸入讀入一個字符,鍵盤輸入的時候,屏幕顯示所輸入的字符。帶回顯。
這兩個函數包含在頭文件conio.h中,需要記住的是conio.h不是C標準庫中的頭文件。Micorsoft 和 Borland的 C編譯器提供了conio.h,用來創建控制臺文本用戶界面。一般在Windows系統下安裝了VS、VC等,就可以包含conio.h頭文件。但是一般在Unix、Linux系統中, / usr / include / 中都沒有這個頭文件。
getch和getche在等待用戶從鍵盤輸入的時候,用戶按下一個鍵后,不需要按回車,程序自動往下執行。在Linux中,終端輸入在缺省情況下是被“一鍋端”的,也就是說整行輸入是被一起處理的。通常,這是一種人們所希望的方便的辦法,但它也意味著在讀入數據時必須按一下回車鍵表示輸入行結束后才能得到輸入的數據。在游戲中,很多都提供了“老板鍵”,它的實現,就是利用了這兩個函數。
其次,除了getch和getche,其他的都是C標準庫中的頭文件,包含在頭文件stdio.h中。
int fgetc ( FILE xstream ); //從流stream中讀一個字符。可以將標準輸入stdin作為它的實參,這時候從標準輸入讀取一個字符。
int getc(FILE xstream); //和fgetc等效,由fgetc通過宏實現。
int getchar ( void );
//從標準輸入stdin讀入一個字符,程序等待你輸入的時候,你可以輸入多個字符,回車后程序繼續執行。
//但getchar只讀入一個字符
說明:
getc、getchar都是通過宏定義借助fgetc實現。如getchar的實現為,#define get) fgetc(stdin)。
char xfgets (char xstr, int num, FILE xstream);
//從流stream中讀入最多num個字符到字符數組str中,當遇到換行符時、或讀到num-1個字符時停止。
//自動加上空字符結尾
char xgets ( char xstr );
//從標準輸入stdin讀取一個字符串,遇到換行或結束時候終止。
//不同于fgets,他沒有指定num,所以需要注意字符數組str的大小。
說明: fgets和gets之間沒有宏定義的關系,彼此各自有自己的實現。蠕蟲病毒的實現就是函數gets的“功勞”。gets函數的任務是從流中讀入一個字符串。它的調用者會告訴它把讀入的字符串放在什么地方。但是,gets()函數并不檢查緩沖區大小,如果調用者提供了一個指向堆棧的指針,并且get()函數讀入的字符數量超過了超過了緩沖區的空間大小,get()會愉快地將多出來的字符繼續寫入到堆棧中,這就覆蓋了堆棧中原來的內容。如:
main()
{char line[512]; //在程序的堆棧上分配512個字符的空間...gets(line); //蠕蟲病毒的入口,可以將惡意代碼通過多出來的數據寫入堆棧}
建議不要用getch和getche,因為它們不是C標準庫中的函數。用它們寫出的程序可移植性差,不同的編譯器不保證可以包含conio.h。建議用fgets函數徹底替代gets函數。
另外,絕大多數的這些get函數,都有對應的put版本。
int fputc ( int character, FILE xstream );
int putc ( int character, FILE xstream ); //通過宏定義和fputc實現
int putchar ( int character );
//通過宏定義實現:#define putc) fputc(c, stdout)
int fputs ( const char xstr, FILE xstream );
int puts ( const char xstr );
說明:兩者之間無宏定義實現關系。puts(const char xstr)近似等效于fputs(cosnt char xstr, stdout),不同點是前者還輸出一個
最后,關于EOF
EOF是在stdio.h 文件中定義的符號常量,值
C語言認識
函數(Function)是一段可以重復使用的代碼,這是從整體上對函數的認識。
C語言本身帶了很多庫函數,并分門別類地放在了不同的頭文件中,使用時只要引入對應的頭文件即可。
除了C語言自帶的函數,我們也可以編寫自己的函數,稱為自定義函數(User-Defined Function)。自定義函數和庫函數沒有本質的區別,表現形式和使用方法一樣,只是開發者不同而已。
這一章我們就來講解如何編寫和使用自己的函數。
參數
函數的一個明顯特征就是使用時帶括號( ),必要的話,括號中還要包含數據或變量,稱為參數(Parameter)。參數是函數需要處理的數據,例如:
strlen(str1)用來計算字符串的長度,str1就是參數。
puts("C語言中文網")用來輸出字符串,"C語言中文網"就是參數。
返回值
既然函數可以處理數據,那就有必要將處理結果告訴我們,所以很多函數都有返回值(Return Value)。所謂返回值,就是函數的執行結果。例如:
char str1[] = "C Language";
int len = strlen(str1);
strlen() 的處理結果是字符串 str1 的長度,是一個整數,我們通過 len 變量來接收。
函數返回值有固定的數據類型(int、char、float等),用來接收返回值的變量類型要一致。
【C語言中函數的區分有哪些】相關文章:
C語言中的重要概念有哪些12-11
c語言中time函數的用法03-20
C語言中strpbr()函數的用法03-19
C語言中isalnum()函數和isalpha()函數的對比04-01
C語言中friend友元函數詳細解析04-01
C語言中返回字符串函數的實現方法03-19
C語言中void有什么作用03-15
C語言的缺點有哪些12-04
C++調用C函數的方法11-15