15
CSIM, PU C Language 輸輸輸輸輸 (I/O)

輸出與輸入 (I/O)

  • Upload
    rhoda

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

輸出與輸入 (I/O). 標準輸出與輸入. 標準輸出 (Standard Output, stdout): 將資料送到螢幕顯示 . 標準輸入 ((Standard Input, stdin): 接收鍵盤輸入的資料. 格式化輸出 (printf 函數 ). printf 函數的作用是將欲顯示的訊息輸出至螢幕 , 使用語法如下 : printf( “ 顯示字串 "); 例如 : printf("Every day is working day."); printf("This number is 2."); 執行結果:. - PowerPoint PPT Presentation

Citation preview

Page 1: 輸出與輸入 (I/O)

CSIM, PU C Language

輸出與輸入 (I/O)

Page 2: 輸出與輸入 (I/O)

2CSIM, PU C Language

標準輸出與輸入 標準輸出 (Standard Output, stdout): 將資料送到螢幕顯示 .

標準輸入 ((Standard Input, stdin): 接收鍵盤輸入的資料 .

類 型 函數名稱 說 明 標頭檔

標 準輸 出函 數

printf 最常見功能最強的格式化輸出函數 stdio.h

puts 字串顯示函數 stdio.h

putchar 字元顯示函數 stdio.h

putch 字元顯示函數 conio.h

標 準輸 入函 數

scanf 最常見功能最強的格式化輸入函數 stdio.h

gets 字串讀取的輸入函數 stdio.h

getchar 字元讀取的輸入函數 stdio.h

getche 單一字元直接讀取有顯示輸入函數 conio.h

getch 單一字元直接讀取無顯示輸入函數 conio.h

Page 3: 輸出與輸入 (I/O)

3CSIM, PU C Language

格式化輸出 (printf 函數 ) printf 函數的作用是將欲顯示的訊息輸出至螢幕 , 使用語法如下

: printf(“ 顯示字串 ");

例如 :

printf("Every day is working day.");

printf("This number is 2.");

執行結果:

Page 4: 輸出與輸入 (I/O)

4CSIM, PU C Language

格式化輸出 (printf 函數 )- 不同型態資料顯示

把變數 num的內容以%d的格式替換到這兒

如果 num=3, 則結果為 I have 3 dogs.

結果為 This is number two: 2.

結果為 0

printf 函數的作用是將欲顯示的訊息輸出至螢幕 , 使用語法如下 : printf( “ 格式字串 格式碼” , 參數 1, 參數 2, …);

各種資料型態的控制格式 ( 格式碼 ) 如下頁所示 .

參數列 :

欲輸出的資料的變數 , 常數或運算式

例如 :

printf(“I have %d cats.”, num);

printf(“This number is %d.”,2);

printf(“%d”,1/3);

Page 5: 輸出與輸入 (I/O)

5CSIM, PU C Language

課堂練習 請使用 Dev C++, 並將以下的程試碼存檔並執行 . #include<stdio.h> int main(void) { int a=2; int b=3; printf("I have %d dogs and %d cats\n", a, b); system(“pause"); return 0; } 執行結果如下所示 :

可使執行結果容易觀看

Page 6: 輸出與輸入 (I/O)

6CSIM, PU C Language

scanf 函數的作用是將鍵盤輸入的資料 , 指定為變數的值 ,使用語法如下 :

scanf(“ 格式碼 , 變數位址 1, 變數位址 2,…) 例如 :

#include<stdio.h> int main(void) { int x,y; printf("Please input two numbers:\n"); scanf("%d %d" ,&x, &y); printf("results:%d, %d",x,y); system("pause"); return 0; } /* 兩個控制格式之間用空白隔開 , 故輸入整數時亦需用空白 ( 或換

行或 Tab 鍵 ) 隔開 , 按 Enter 鍵 , 表示輸入完畢 , 則系統才會繼續執行 .*/

格式化的輸入 (scanf 函數 )

程式執行到此行 , 會等待使用者輸入兩個數字

Page 7: 輸出與輸入 (I/O)

7CSIM, PU C Language

格式化的輸入 (scanf 函數 ) #include<stdio.h> int main(void) { int x,y; printf("Please input two numbers:\n"); scanf("%d,%d",&x,&y); printf("results:%d,%d",x,y); system("pause"); return 0;

}/* 若以逗號隔開兩個輸入的格式碼 , 在輸入資料時 , 也必須以逗號來區隔 */

請試試看若是在輸入第一筆資料後,直接按下” Enter” 鍵,會有什麼結果 ?

Page 8: 輸出與輸入 (I/O)

8CSIM, PU C Language

printf() 與 scanf() 的控制格式對照表printf() 函數 scanf() 函數 資料型態%c %c 字元%d %d 十進位整數%o %o 八進位整數%x %x 十六進位整數%s %s 字串%f %e 浮點 ( 小數點表示 )

%lf %lf 倍精度浮點數 (l 為英文小寫字母 )

%e %f 浮點 ( 指數 e 表示 )

Page 9: 輸出與輸入 (I/O)

9CSIM, PU C Language

輸入字元的函數

getch( ) getche( ) getchar( )

只接受一個字元輸入 是 是 是

需按 Enter 鍵 不要 不要 要

回應到螢幕上 無回應 回應 回應

# include 要 要 要

所屬標題檔檔 conio.h conio.h stdio.h

函數的格式 變數 =getch(); 變數 =getche();變數 =getchar()

;

字元資料輸入函數功能對照表

Page 10: 輸出與輸入 (I/O)

10CSIM, PU C Language

字元輸出的函數

字元輸出函數 putchar()

將指定的字元送到螢幕顯示 ,此函數屬於標準輸出入函數 (stdio.h)

函數格式為 putchar(變數 );

putch()

將指定的字元送到螢幕顯示 ,此函數屬於控制台的輸出入函數 (conio.h)函數格式為 putch(變數 );

Page 11: 輸出與輸入 (I/O)

11CSIM, PU C Language

字元輸出函數 ---- 練習/* 字元輸入與輸出函數的應用 */ #include <stdio.h> #include<conio.h> void main(void) { char ch1,ch2,ch3; printf(“Please enter two characters:\n”); /* 請直接輸入兩個字元 , 輸入完即讀入 buffer 中 */ ch1=getche(); ch2=getche(); printf("\nThe first character is:\n"); /* 顯示第一個字元 */ putchar(ch1); printf("\nThe second character is:\n"); /* 顯示第二個字元 */ putchar(ch2); printf("\nPlease input a character:\n"); /* 請再輸入一個字元 , 需按下 enter 之後才作讀取動作 */ ch3=getchar(); printf("\nThe third character is:\n"); putchar(ch3); printf("\n\n\n"); system("pause"); }

Page 12: 輸出與輸入 (I/O)

12CSIM, PU C Language

基本的輸出與輸入 ---- 範例 2

/* 輸入一個字元 , 顯示相對應的 ASCII 碼 */ #include <stdio.h> #include <stdlib.h> int main(void) { char ch; /* 宣告一個字元變數 */ /* 使用字元輸入格式符號輸入字元 */ printf("Please input a character: "); scanf("%c",&ch); /* 顯示輸入的字元與相對應之 ASCII 碼 */ printf("ch=%c , ASCII code is %d. \n", ch, ch); system("pause"); return 0; /* 程式正常結束 */ }

Page 13: 輸出與輸入 (I/O)

13CSIM, PU C Language

讀取字元的常見錯誤 #include<stdio.h> int main(void) { int num; char ch; printf("Please input a integer:\n"); scanf("%d",&num); printf("Please input a character:"); scanf("%c",&ch); printf("\nnum=%d,ASCII code of character=%d\n",num,ch); system("pause"); return 0; }

此時 ch 變數的內容為” enter”( 換行字元 ) 而不能再存

入使用者要鍵入之字元

Page 14: 輸出與輸入 (I/O)

14CSIM, PU C Language

讀取字元的常見錯誤 --- 解決之道 1. 在 scanf(); 中的 %c 之前留一個空白就可以跳過此換行字元 . 2. 使用 fflush(stdio) 函數來清除緩衝區的資料 .

#include<stdio.h> int main(void) { int num; char ch; printf("Please input a integer:\n"); scanf("%d",&num); fflush(stdin); printf("Please input a character:"); scanf("%c",&ch); printf("\nnum=%d,ASCII code of character=%d\n",num,ch); system("pause"); return 0; }

Page 15: 輸出與輸入 (I/O)

15CSIM, PU C Language

基本的輸出與輸入 ---- 範例 3

/* 輸入一個字串 */ #include <stdio.h> #include <stdlib.h> int main() { char name[10]; /* 宣告字元陣列 */ /* 使用字串輸入格式符號輸入字串 */ printf("What's your name: "); scanf("%s",&name); /* 輸入字串 , 並由字元陣列 name 所接收 */ printf("Hi~ %s , How are you ?\n" , name); /* 印出字串的內容 */ system("pause"); return 0; /* 程式正常結束 */ }