C語言輸入輸出
當我們說輸入,這意味著一些數據送入程序。這可以在文件的形式或從命令行給出。 C語言編程提供了一組內置函數來讀取給定的輸入,並將其進給到程序按要求。
當我們說的輸出,這意味著在屏幕上顯示,打印機或在任何文件中的一些數據。 C語言編程提供了一組內置函數,以輸出在計算機屏幕上的數據,以及可以保存在文本或二進製文件數據。
標準文件
C語言編程將所有的設備上進行文件。所以,如在顯示設備中解決方式相同文件和下麵的三個文件是當一個程序執行,以提供接入到鍵盤和屏幕自動打開。
標準文件 | 文件指針 | 設備 |
---|---|---|
標準輸入 | stdin | 鍵盤 |
標準輸出 | stdout | 屏幕 |
標準錯誤 | stderr | 屏幕 |
文件指向是訪問文件讀取和寫入目的的手段。本節將介紹如何讀取以及如何值在屏幕上打印結果。
getchar() & putchar() 函數
int getchar(void) 函數從屏幕讀取下一個可用的字符並將其作為一個整數。此函數在每次隻能讀取單個字符。在可以情況下,循環使用此方法從屏幕讀取多個字符。
int putchar(int c) 函數使屏幕上的字符傳遞,並返回相同的字符。此函數使僅一次讀取單個字符。想在屏幕上顯示多個字符可以循環使用此方法。請看看下麵的例子:
#include <stdio.h> int main( ) { int c; printf( "Enter a value :"); c = getchar( ); printf( " You entered: "); putchar( c ); return 0; }
當上麵的代碼被編譯和執行,當輸入文字,按回車後程序進行,並隻讀取單個字符和如下顯示它等待輸入一些文字:
$./a.out Enter a value : this is test You entered: t
gets() & puts()函數
char *gets(char *s) 函數讀取一行從標準輸入到緩衝區,由s直到終止換行符或EOF。
int puts(const char *s) 函數將字符串s和換行符到stdout。
#include <stdio.h> int main( ) { char str[100]; printf( "Enter a value :"); gets( str ); printf( " You entered: "); puts( str ); return 0; }
當上麵的代碼被編譯並執行,它等待輸入,當輸入一個文本,然後按回車,然後程序進行,並讀取整行,直到結束,如下顯示它的一些文字:
$./a.out Enter a value : this is test You entered: This is test
scanf() 和 printf()函數
int scanf(const char *format, ...) 函數從標準輸入流stdin中讀取輸入,並根據規定的格式掃描輸入。
int printf(const char *format, ...) 函數將輸出到標準輸出流stdout和根據提供的格式生成輸出。
格式(format)可以是一個簡單的常量字符串,但可以指定%s, %d, %c, %f, 等,打印或讀取字符串,整數,字符或浮點。可根據要求來使用的許多其它格式選項。對於一個完整的細節,可以參考手冊了解這些函數。現在讓我們進行一個簡單的例子,了解以上函數的應用:
#include <stdio.h> int main( ) { char str[100]; int i; printf( "Enter a value :"); scanf("%s %d", str, &i); printf( " You entered: %s %d ", str, i); return 0; }
當上麵的代碼被編譯和執行,當你輸入文字,然後按回車,然後程序進行,並讀取輸入如下顯示它等待輸入一些文字:
$./a.out Enter a value : seven 7 You entered: seven 7
這裡,應該指出的是scanf()的預期輸入提供%s和%d相同的格式,這意味著必須提供類似“string integer”有效的輸入,如果提供“string string”或“integer integer“那麼它將被假定為錯誤的輸入。其次,在諏讀一個字符串scanf()將停止讀取,因為它遇到了一個空格,所以“this is test”三個字符串由scanf()函數讀取。