C语言scanf函数

一、数据输入

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

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

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

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

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

二、断章取义

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

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

三、scanf输入

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

scanf函数的调用方法是:

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

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

1、输入整数

输入整数的格式用%d表示,在参数中列出整数型变量名,用于保存输入的数据。

在输入数据之前,一般要先输出一句话提示用户。下同。

  int age=0;
  printf("请输入您的年龄:");   // 提示文字不要换行,让用户在后面输入,下同。
  scanf("%d",&age);     // 在变量名前要加符号&,取变量的地址。

2、输入字符

输入字符的格式用%c表示,在参数中列出字符型变量名,用于保存输入的数据。

  char xb=0;
  printf("请输入您姓别:"); 
  scanf("%c",&xb);     // 在变量名前要加符号&

3、输入浮点数

输入浮点数的格式用%lf表示,在参数中列出浮点型变量名,用于保存输入的数据。

  double weight=62.5;
  printf("请输入您体重:");  
  scanf("%lf",&weight);     // 在变量名前要加符号&。

4、输入字符串

输入字符串的格式用%s表示,在参数中列出字符串变量名,用于保存输入的数据。

  char name[21];
  memset(name,0,sizeof(name));
  printf("请输入您姓名:"); 
  scanf("%s",name);     // 注意了,字符串变量名前可以不加符号&。

5、输入多个内容

调用一次scanf函数可以输入多个数据,全部的数据输入完成后按回车键结束输入。

  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变量前没加&。

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

6、示例(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函数最简单的用法。

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

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

五、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

来源:C语言技术网(www.freecplus.net

作者:码农有道

posted @ 2020-04-13 15:45  码农有道  阅读(879)  评论(0编辑  收藏  举报