C 输入 & 输出

时间:2022-03-28 01:24:48

C 输入 & 输出

当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。

当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中。

数据输入

编写程序的主要目的就是为了处理数据。数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据、从数据库中读取数据、从网页中抓取数据等,还有一种原始的方式就是从键盘输入数据。

在C语言中,有三个函数可以从键盘获得用户输入。

getchar:输入单个字符,保存到字符变量中。

gets:输入一行数据,保存到字符串变量中。

scanf:格式化输入函数,一次可以输入多个数据,保存到多个变量中。

数据输出

在C语言中,有三个函数可以把数据输出到屏幕。

putchar:输出单个字符。

puts:输出字符串。

printf:格式化输出函数,可输出常量、变量等。

断章取义

三十年前,个人电脑还不流行的时候,软件主要用C语言编写,包括操作界面,数据的输入和输出函数都很重要。现在,数据的输入和展示由网页和APP等软件去完成,C程序主要用于数据处理和网络通信,程序运行在后台,没有操作界面。所以,getchar、gets、scanf这几个函数几乎不用。

各位是初学者,出于教学的需要,采用scanf从键盘输入数据,便于演示程序的功能,所以我们只需要学习scanf函数的简单用法即可,getchar和gets函数无需关注。

C语言的输入函数已不重要,但输出函数仍然非常重要。

putchar和puts函数没什么用,已经被淡忘,那就忘了吧。

printf函数非常重要,以后我们将深入学习,本章节只讨论它的简单用法。

现在,只剩下scanf和printf函数了。

printf输出

printf函数是格式化输出函数, 用于向屏幕输出数据。

printf函数的调用方法是:

 printf(格式化字符串,参数列表);

1、输出描述性的文字

把输出的文字用双引号包含起来,文字中的\n表示换行,多个\n可以换多行。

  printf("我心匪席,不可卷也,我心匪石,不可转也。\n");

以上代码将在屏幕上输出文字:

 我心匪席,不可卷也,我心匪石,不可转也。

出输文字之后,再输出一个换行。

2、输出整数

输出整数型常量或变量用%d表示,在参数中列出待输出的整数常量或变量。

printf("我年龄是%d岁。\n",18);
int age=18;
printf("我年龄是%d岁。\n",age);

输出浮点数

输出的浮点型常量或变量用%lf表示,在参数中列出待输出的浮点型常量或变量。

printf("我体重是%lf公斤。\n",62.5);
double weight=62.5;
printf("我体重是%lf公斤。\n", weight);

输出字符

输出字符型常量或变量用%c表示,在参数中列出待输出的字符常量或变量。

printf("我姓别是:%c。\n",'x');        // 姓别:x-男;y-女
char xb='x';
printf("我姓别是:%c。\n",xb);

输出字符串

输出字符串常量或变量用%s表示,在参数中列出待输出的字符串常量或变量。

printf("我的姓名是%s。\n","西施");
char name[21];
memset(name,0,sizeof(name));
strcpy(name, "西施");
printf("我的姓名是%s。\n",name);

输出多个内容

调用一次printf函数可以输出多个常量或变量。

int age=18;
char xb='x';
double weight=62.5;
char name[21];
memset(name,0,sizeof(name));
strcpy(name, "西施");
printf("我的姓名是:%s,姓别:%c,年龄:%d岁,体重%lf公斤。\n",name,xb,age,weight);

注意,printf函数第一个参数(格式化字符串)的格式与后面的参数列表(常量或变量的列表)要一一对应,一个萝卜一个坑的填进去,不能多,不能少,顺序也不能错,否则会产生意外的结果。

示例(book12.c)

/*
 *  程序名:book12.c,此程序演示printf函数输出变量的内容
 *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>

int main()
{
  int age=18;
  char xb='y';
  double weight=45.5;

  char name[21];
  memset(name,0,sizeof(name));
  strcpy(name,"西施");

  printf("我的姓名是:%s,姓别:%c,年龄:%d岁,体重%f公斤。\n",name,xb,age,weight);

  return 0;
}

scanf输入

scanf函数是格式化输入函数,用于接受从键盘输入的数据,用户输入数据完成后,按回车键(Enter)结束输入。

scanf函数的调用方法是:

scanf(格式化字符串,参数列表);

注意,不要在scanf的格式化字符串的最后加\n。

示例(book13.c)

/*
 *  程序名:book13.c,此程序演示scanf函数输入数据。
 *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>

int main()
{
  int age=0;
  char xb=0;
  double weight=0;

  char name[21];
  memset(name,0,sizeof(name));

  printf("请输入您的姓名、姓别(x-男;y-女),年龄和体重,中间用空格分隔:");
  scanf("%s %c %d %lf",name,&xb,&age,&weight); // 只有name变量前没加&,其它的都加了。

  printf("您的姓名是:%s,姓别:%c,年龄:%d岁,体重%lf公斤。\n",name,xb,age,weight);

  return 0;
}

注意事项

1)本章节只学习scanf和printf函数最简单的用法。

2)scanf函数只是在C程序基本知识的学习中才用到,在实际开发中基本上不用。

3)printf不是一个函数,是一系列函数,功能强大,变化很多,应用广泛,极其重要,以后我们将深入的学习它。

4)scanf函数的变量列表,除了字符串,其它的变量前面都要加&,表示取地址,如果不加,程序编译不会报错,但运行时会出现意想不到的后果(1-赋值不成功;2-段错误Core dump)。

5)printf函数的变量列表,变量名前都不需要加&。