C语言中的基本I/O概念

138 阅读3分钟

C是一种小型语言,C的 "核心 "并不包括任何输入/输出(I/O)功能。

当然,这并不是C语言独有的东西。语言的核心对I/O不了解是很常见的。

就C语言而言,输入/输出是由C标准库通过stdio.h 头文件中定义的一组函数提供给我们的。

你可以在你的C文件上面用.NET导入这个库。

在你的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()

printf() 是你在学习C语言编程时首先要使用的函数之一。

在其最简单的使用形式中,你传递给它一个字符串字面。

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

你可以打印一个变量的值,这有点麻烦,因为你需要添加一个特殊的字符,即占位符,它根据变量的类型而变化。例如,我们用%d ,表示一个有符号的十进制整数位。

int age = 37;

printf("My age is %d", age);

我们可以通过使用逗号来打印一个以上的变量。

int age_yesterday = 36;
int age_today = 37;

printf("Yesterday my age was %d and today is %d", age_yesterday, age_today);

还有一些其他的格式指定符,如%d

  • %c 对于一个字符
  • %s 字符串
  • %f 适用于浮点数
  • %p 指针

以及更多。

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

scanf()

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

这个函数用来从运行程序的用户那里获得一个值,从命令行中获得。

我们必须首先定义一个变量,用来保存我们从输入中得到的值。

然后我们用2个参数调用scanf() :变量的格式(类型),以及变量的地址。

如果我们想得到一个字符串作为输入,请记住,一个字符串的名称是一个指向第一个字符的指针,所以你不需要前面的& 字符。

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

下面是一个同时使用printf()scanf() 的小程序。

#include <stdio.h>

int main(void) {
  char name[20];
  printf("Enter your name: ");
  scanf("%s", name);
  printf("you entered %s", name);
}