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 | int age = 37; |
我们可以使用逗号打印多个变量:
1 | int age_yesterday = 36; |
还有其他的格式说明符比如 %d
:
%c
代表一个字符%s
代表一个字符串%f
代表浮点数%p
代表指针
等等。
在printf()
中我们可以使用转义字符,如\n
,它可以在输出中创建新的一行。
scanf()
printf()
用作输出函数。现在我想介绍一个输入函数,以便我们可以说我们可以做好所有的I/O事情:scanf()
。
此函数用于从运行程序的用户那里获得一个值,从命令行输入。
我们首先必须定义一个变量,用于保存从输入中获得的值:
1 | int age; |
然后我们以两个参数调用scanf()
:变量的格式(类型)和变量的地址:
1 | scanf("%d", &age); |
如果我们想要获得一个字符串作为输入,请记住字符串名称是指向第一个字符的指针,因此您不需要在它之前加上&
字符:
1 | char name[20]; |
这是一个使用了printf()
和scanf()
的小程序:
1 | #include <stdio.h> |
tags: [“c programming”, “input/output”, “printf”, “scanf”, “stdio”]