# C 输入输出（I/O）

> 原文： [https://www.programiz.com/c-programming/c-input-output](https://www.programiz.com/c-programming/c-input-output)

#### 在本教程中，您将学习使用`scanf()`函数从用户那里获取输入，并使用`printf()`函数向用户显示输出。

## C 输出

在 C 编程中，`printf()`是主要的输出功能之一。 该功能将格式化的输出发送到屏幕。 例如，

* * *

### 示例 1：C 输出

```c
#include <stdio.h>    
int main()
{ 
    // Displays the string inside quotations
    printf("C Programming");
    return 0;
}
```

**输出**

```c
C Programming
```

该程序如何工作？

*   所有有效的 C 程序都必须包含`main()`函数。 从`main()`函数的开始开始执行代码。
*   `printf()`是一种库功能，用于将格式化的输出发送到屏幕。 该函数在引号内打印字符串。
*   要在我们的程序中使用`printf()`，我们需要使用`#include <stdio.h>`语句包含`stdio.h`头文件。
*   `main()`函数内的`return 0;`语句是程序的“退出状态”。 它是可选的。

* * *

### 示例 2：整数输出

```c
#include <stdio.h>
int main()
{
    int testInteger = 5;
    printf("Number = %d", testInteger);
    return 0;
}
```

**输出**

```c
Number = 5
```

我们使用`%d`格式说明符来打印`int`类型。 此处，报价内的`%d`将由`testInteger`的值替换。

* * *

### 示例 3：浮点和双精度输出

```c
#include <stdio.h>
int main()
{
    float number1 = 13.5;
    double number2 = 12.4;

    printf("number1 = %f\n", number1);
    printf("number2 = %lf", number2);
    return 0;
}
```

**输出**

```c
number1 = 13.500000
number2 = 12.400000
```

要打印`float`，我们使用`%f`格式说明符。 同样，我们使用`%lf`打印`double`值。

* * *

### 示例 4：打印字符

```c
#include <stdio.h>
int main()
{
    char chr = 'a';    
    printf("character = %c.", chr);  
    return 0;
} 
```

**输出**

```c
character = a

```

要打印`char`，我们使用`%c`格式说明符。

* * *

## C 输入

在 C 编程中，`scanf()`是从用户获取输入的常用功能之一。`scanf()`函数从标准输入（例如键盘）读取格式化的输入。

* * *

### 示例 5：整数输入/输出

```c
#include <stdio.h>
int main()
{
    int testInteger;
    printf("Enter an integer: ");
    scanf("%d", &testInteger);  
    printf("Number = %d",testInteger);
    return 0;
}
```

**输出**

```c
Enter an integer: 4
Number = 4
```

在这里，我们使用了`scanf()`函数中的`%d`格式说明符来获取用户的`int`输入。 当用户输入整数时，它存储在`testInteger`变量中。

注意，我们在`scanf()`中使用了`&testInteger`。 这是因为`& testInteger`获得了`testInteger`的地址，并且用户输入的值存储在该地址中。

* * *

### 示例 6：浮点和双精度输入/输出

```c
#include <stdio.h>
int main()
{
    float num1;
    double num2;

    printf("Enter a number: ");
    scanf("%f", &num1);
    printf("Enter another number: ");
    scanf("%lf", &num2);

    printf("num1 = %f\n", num1);
    printf("num2 = %lf", num2);

    return 0;
}
```

**输出**

```c
Enter a number: 12.523
Enter another number: 10.2
num1 = 12.523000
num2 = 10.200000
```

我们分别对`float`和`double`使用`%f`和`%lf`格式说明符。

* * *

### 示例 7：C 字符 I/O

```c
#include <stdio.h>
int main()
{
    char chr;
    printf("Enter a character: ");
    scanf("%c",&chr);     
    printf("You entered %c.", chr);  
    return 0;
} 
```

**输出**

```c
Enter a character: g
You entered g.

```

当用户在上述程序中输入字符时，字符本身不会被存储。 而是存储一个整数值（ASCII 值）。

当我们使用`%c`文本格式显示该值时，将显示输入的字符。 如果我们使用`%d`显示字符，则会打印它的 ASCII 值。

* * *

### 示例 8：ASCII 值

```c
#include <stdio.h>
int main()
{
    char chr;
    printf("Enter a character: ");
    scanf("%c", &chr);     

    // When %c is used, a character is displayed
    printf("You entered %c.\n",chr);  

    // When %d is used, ASCII value is displayed
    printf("ASCII value is % d.", chr);  
    return 0;
}
```

输出量

```c
Enter a character: g
You entered g.
ASCII value is 103.

```

* * *

## I/O 多个值

这是您可以从用户那里获取多个输入并显示它们的方法。

```c
#include <stdio.h>
int main()
{
    int a;
    float b;

    printf("Enter integer and then a float: ");

    // Taking multiple inputs
    scanf("%d%f", &a, &b);

    printf("You entered %d and %f", a, b);  
    return 0;
}
```

**输出**

```c
Enter integer and then a float: -3
3.4
You entered -3 and 3.400000

```

* * *

## I/O 的格式说明符

从以上示例中可以看到，我们使用

*   `int`的`%d`
*   `float`的`%f`
*   `double`的`%lf`
*   `char`的`%c`

这是常用的 C 数据类型及其格式说明符的列表。

| 数据类型 | 格式说明符 |
| --- | --- |
| `int` | `%d` |
| `char` | `%c` |
| `float` | `%f` |
| `double` | `%lf` |
| `short int` | `%hd` |
| `unsigned int` | `%u` |
| `long int` | `%li` |
| `long long int` | `%lli` |
| `unsigned long int` | `%lu` |
| `unsigned long long int` | `%llu` |
| `signed char` | `%c` |
| `unsigned char` | `%c` |
| `long double` | `%Lf` |