Like Share Discussion Bookmark Smile

J.J. Huang   2019-10-09   C   瀏覽次數:

C語言 - 第五章 | Basic I/O - 標準輸入

什麼是標準輸入?

一個程式需要有輸入/計算/輸出,我們現在已經能夠順利地宣告變數便將其印出,那緊接著就是把東西塞進變數裡面了。在輸入的時候,你除了必須了解你輸入的東西是什麼型態,例如:10是整數、3.14是浮點數及A是字元,更要注意的是要用「多大的空間」去儲存。


輸出函式

C語言裡,提供輸入功能的函式有幾個,分別是:

  • scanf()
  • getc()
  • gets()
  • read()

註:其中和printf()互相呼應的便是scanf()了。


scanf

scanf()的用法和printf()有點類似,都是透過格式控制字串來決定要怎麼輸入

1
2
3
4
5
6
7
int num;
double fnum;
char ch;

scanf("%d", &num);
scanf("%lf", &fnum);
scanf("%c", &ch);

格式控制字串中帶有%d,代表著我要輸入一個整數,並將它存到num中。
常用的格式控制字元代表的型態:

格式控制字元 型態
%d 整數(int)
%lld 長整數(long long int)
%u 無號整數(unsigned int)
%f 單精度浮點數(float)
%lf 倍經度浮點數(double)
%Lf 長倍經度浮點數(long double)
%c 字元(char)

注:在scanf()中,不可以使用以「\」開頭的任何格式控制字元,例如:換行「\n」、Tab「\t」都不可以出現在scanf()中。


取址運算子

&」是一個相當特殊的運算子,它的功能是「取得一個變數的地址」。
scanf()中,除了要提供要輸入的型態,同時也要指定他要存到哪裡去,但是只指定變數是不夠的,scanf()需要明確知道要寫到「哪裡去」, 因此我們需要加上取址運算子「&」,讓scanf()直接將輸入的東西寫到指定位置上。
關於記憶體控制及相關概念會在之後再詳細講解,現在大家只要知道使用scanf()時要加上&即可。


練習

這部分很多都是類型的問題,我還沒有非常深入了解,一步一步慢慢嘗試中⋯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int main()
{
int num;
double fnum;
char ch;

scanf("%d", &num);
scanf("%lf", &fnum);
scanf(" %c", &ch, "strnig");

printf("%d\n", num);
printf("%lf\n", fnum);
printf("%c\n", ch);

return 0;
}


註:以上參考了
hackersir gitbooks
語言技術:C 語言
百度 - short (c语言)
資料型別(Data Type)