/

C中的基本I/O概念

C中的基本I/O概念

在C中如何使用printf和scanf进行输入/输出

C是一种简单的语言,而C的“核心”不包含任何输入/输出(I/O)功能。

当然,这不是C的特有情况。语言的核心通常对I/O不做任何假设。

在C的情况下,通过C标准库的stdio.h头文件中定义的一组函数向我们提供输入/输出功能。

您可以使用以下命令导入此库:

1
#include <stdio.h>

在您的C文件顶部。

该库提供给我们许多其他函数之一:

  • printf()
  • scanf()
  • sscanf()
  • fgets()
  • fprintf()

在描述这些函数的功能之前,我想花一分钟谈谈I/O流的概念。

在C中有3种类型的I/O流:

  • stdin(标准输入)
  • stdout(标准输出)
  • stderr(标准错误)

使用I/O函数时,我们始终使用流。流是一个可以表示设备或文件的高级接口。从C的角度来看,无论是从文件还是从命令行中读取,它都是一个I/O流。

这是需要记住的一点。

有些函数设计为使用特定的流,例如printf(),它用于将字符打印到stdout。使用更通用的fprintf(),我们可以指定要写入的流。

既然我开始谈论printf(),现在让我们介绍一下它。

printf()

当学习C编程时,printf()是你将使用的第一个函数之一。

在最简单的用法中,您将其作为一个字符串字面量传递:

1
printf("hey!");

程序将把字符串的内容打印到屏幕上。

您可以打印变量的值,这有些棘手,因为您需要添加一个特殊的字符,一个占位符,它根据变量的类型而改变。例如,对于有符号的十进制整数,我们使用%d

1
2
3
int age = 37;

printf("我的年龄是 %d", age);

我们可以使用逗号打印多个变量:

1
2
3
4
int age_yesterday = 36;
int age_today = 37;

printf("昨天我是 %d 岁,而今天是 %d 岁", age_yesterday, age_today);

还有其他的格式说明符比如 %d

  • %c代表一个字符
  • %s代表一个字符串
  • %f代表浮点数
  • %p代表指针

等等。

printf()中我们可以使用转义字符,如\n,它可以在输出中创建新的一行。

scanf()

printf()用作输出函数。现在我想介绍一个输入函数,以便我们可以说我们可以做好所有的I/O事情:scanf()

此函数用于从运行程序的用户那里获得一个值,从命令行输入。

我们首先必须定义一个变量,用于保存从输入中获得的值:

1
int age;

然后我们以两个参数调用scanf():变量的格式(类型)和变量的地址:

1
scanf("%d", &age);

如果我们想要获得一个字符串作为输入,请记住字符串名称是指向第一个字符的指针,因此您不需要在它之前加上&字符:

1
2
char name[20];
scanf("%s", name);

这是一个使用了printf()scanf()的小程序:

1
2
3
4
5
6
7
8
#include <stdio.h>

int main(void) {
char name[20];
printf("输入你的名字:");
scanf("%s", name);
printf("你输入的名字是:%s", name);
}

tags: [“c programming”, “input/output”, “printf”, “scanf”, “stdio”]