C 標準輸出、輸入
## C 的標準輸出與輸入
C 語言透過 `<stdio.h>` 提供標準輸入與輸出功能:
```c
#include <stdio.h>
```
### 1. 標準輸出:`stdout`
標準輸出通常指螢幕,最常使用 `printf()` 顯示資料。
```c
printf("Hello, C!\n");
```
常見格式指定字元:
| 格式 | 資料型別 |
|---|---|
| `%d` | `int` |
| `%f` | `float` |
| `%lf` | `double` |
| `%c` | `char` |
| `%s` | 字串 |
| `%p` | 指標位址 |
範例:
```c
int age = 20;
printf("年齡:%d\n", age);
```
其中 `\n` 表示換行。
也可以使用:
```c
putchar('A'); // 輸出單一字元
puts("Hello"); // 輸出字串並自動換行
```
### 2. 標準輸入:`stdin`
標準輸入通常指鍵盤,最常使用 `scanf()` 讀取資料。
```c
int age;
scanf("%d", &age);
```
`scanf()` 的第二個參數通常需要加上變數的位址運算子 `&`,讓函式可以修改該變數。
讀取字串時,字元陣列名稱本身已代表位址,因此通常不加 `&`:
```c
char name[50];
scanf("%49s", name);
```
`%49s` 可限制最多讀取 49 個字元,保留 1 個位置給字串結尾的 `'\0'`。
其他輸入函式:
```c
int c = getchar(); // 讀取一個字元
fgets(str, size, stdin); // 讀取一整行,較適合處理含空白的文字
```
## 簡單範例
以下程式讀取使用者的姓名與年齡,再輸出問候訊息:
```c
#include <stdio.h>
int main(void)
{
char name[50];
int age;
printf("請輸入姓名:");
scanf("%49s", name);
printf("請輸入年齡:");
scanf("%d", &age);
printf("你好,%s!你今年 %d 歲。\n", name, age);
return 0;
}
```
執行時可能輸入:
```text
請輸入姓名:Amy
請輸入年齡:20
你好,Amy!你今年 20 歲。
```
在 C 中,`printf()` 的輸出目的地是標準輸出 `stdout`,而 `scanf()` 的輸入來源是標準輸入 `stdin`。除了標準輸出與輸入外,還有標準錯誤輸出 `stderr`,通常使用:
```c
fprintf(stderr, "發生錯誤!\n");
```
相關學習地圖、教學課程
C 語言,系統程式