1. 程式人生 > >C語言程式設計--輸入與輸出

C語言程式設計--輸入與輸出

C語言的輸入



所有的輸入都是依賴於C語言函式進行的,這個函式是C語言標準庫自帶的,定義在標頭檔案<stdio.h>裡面,所以,要想使用與輸入相關的函式,都需要包含這個標頭檔案

#include <stdio.h>

輸入函式gets


這是一個獲取輸入字串的函式,其定義如下文,作用是從 stdin 讀取一行到 s 所指向的緩衝區,直到一個終止符或 EOF。

char * gets(char * string){...}

試驗gets


程式碼如下文

#include <stdio.h>

#define BANNER "Please input:"

int main(void){
  char string[100];
  printf(BANNER);
  gets(string);
  puts(string);
  return 0;
}


很簡單,但是不推薦,因為gets是不安全的,他可以輸入任意長度的字元,可以覆蓋超過變數定義支援的長度,緩衝區溢位風險大。

輸入函式getchar


這是一個獲取輸入字元的函式,其定義如下文,作用是從螢幕讀取下一個可用的字元,並把它返回為一個整數。這個函式在同一個時間內只會讀取一個單一的字元。您可以在迴圈內使用這個方法,以便從螢幕上讀取多個字元。

int getchar(void){...}

試驗getchar


程式碼如下文

#include <stdio.h>

#define BANNER "Please input:"

int main(void){
  char string;
  printf(BANNER);
  string = getchar();
  putchar(string);
  return 0;
}


不推薦,因為獲取多個字元輸入會很麻煩。

輸入函式scanf


這是一個獲取輸入特定資料型別的函式,其定義如下文,函式從標準輸入流 stdin 讀取輸入,並根據提供的 format 來瀏覽輸入。

int scanf(const char *format, ...){}

試驗scanf


程式碼如下文

#include <stdio.h>

#define BANNER "Please input:"

int main(void){
  char input_char;
  int input_int;
  char input_string[100];
  float input_float;
  double input_double;
  printf(BANNER);
  scanf("%d", &input_int);
  printf("%d\n", input_int);
  printf(BANNER);
  scanf("%c", &input_char);
  printf("%c\n", input_char);
  printf(BANNER);
  scanf("%s", input_string);//這裡只能是陣列,因為如果是char *,則不知道大小,會發生段錯誤,這裡使用&input_string 效果一樣,但是會有warning,不推薦,
  printf("%s\n",input_string);
  printf(BANNER);
  scanf("%f", &input_float);
  printf("%f\n", input_float);
  printf(BANNER);
  scanf("%lf", &input_double);
  printf("%lf\n", input_double);
  return 0;
}

C語言的輸出



所有的輸出都是依賴於C語言函式進行的,這個函式是C語言標準庫自帶的,定義在標頭檔案<stdio.h>裡面,所以,要想使用與輸出相關的函式,都需要包含這個標頭檔案

#include <stdio.h>

輸出函式puts


函式把字串 s 和一個尾隨的換行符寫入到 stdout。

int puts(const char *s){...}

試驗puts


在試驗gets中試驗過了puts

輸出函式putchar


函式把字元輸出到螢幕上,並返回相同的字元。這個函式在同一個時間內只會輸出一個單一的字元。您可以在迴圈內使用這個方法,以便在螢幕上輸出多個字元。

int putchar(int c){...}

試驗putchar


在試驗getchar中試驗過了putchar

輸出函式printf


函式把輸出寫入到標準輸出流 stdout ,並根據提供的格式產生輸出。

int printf(const char *format, ...){...}

試驗printf


在試驗scanf中試驗過了printf

附錄:標準化輸入輸出的格式:

資料格式型別 輸入輸出的型別識別符號
十進位制整數 %d
字元型 %c
整數 %i
浮點數 %e, %f, %g
八進位制數 %o
字串 %s
十六進位制書 %x
指標 %p
一個等於讀取字元數量的整數 %n
一個無符號整數 %u