1、输入和输出:

输入:输入也叫读,数据由内核流向用户程序

输出:输出也称写、打印,数据由用户程序流向内核

以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用

2、printf用法(其缺陷在于带缓存)

printf输出时必须加上\n(刷新缓存)

解释:第一幅图没有加\n,不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。

变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误

修饰符

功能

m

输出数据域宽,数据长度m,则自动取n值,即保证n个字符正常输出。

G、f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位

对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位

H、e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%m.ne和%-m.ne:m、n和"-"字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

I、g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

(4)h和l前缀及u

%hd --short int

%ld --long int

%lld --long long int

%lu --unsigned long

%llu --unsigned long long

%ho--八进制显示short整数

%lx--十六进制显示long整数

%le -以科学计数法表示long double

(5)特殊说明

A、需要打印%时,必须之前还要加上一个%

printf("%f%%", 1.0/3);输出0.333333%

B、*的用法

a、printf("%*d\n",8,100);结果:(前面空五格)100

b、int m = 8;printf("%*d\n",m,100);结果:(前面空五格)100

c、char ch[20];printf("%*.*s\n",m,n,ch);说明:前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

C、%n的用法:可以将所输出字符串的长度值赋给一个变量

int slen;printf("hello world%n", &slen);执行后变量slen被赋值为11

3、scanf函数(主要缺陷就是在缓冲区制造垃圾字符,不建议太过复杂的用法)

(1)结束条件

A、空格、TAB或回车

B、宽度结束

C、非法输入(比如程序里scanf中是%d的形式,结果输入的时候输入一个浮点类型的数)

(2)格式说明符

(3)scanf函数返回正确读取的元素的个数

int a,b,c;

scanf("%d%d%d",&a,&b,&c);//不能忘了写取地址符

正确输入时其返回值为3

(4)输入的格式要与程序里的格式保持一致

int a,b,c;

scanf("%d,%d,%d",&a,&b,&c);

输入的时候要输入2,3,4才是正确的

(5)抑制符*

这里跟printf中不同,他表示指定输入项读入后不赋给变量

int a,b;

scanf("%3d%*4d%f",&a,&b);

printf("a = %d,b = %f\n",a,b);

则:输入1234567890,输出为:a = 123,b = 890.000000

(6)垃圾字符(详见4getchar中的解释)

4、字符输入输出getchar和putchar

(1)putchar

A、在理解getchar()之前,首先搞清楚一个概念:

当从键盘上输入字符(数字、字符、符号)时,系统是默认先把输入的内容先存放在缓存空间上,当按下回车(Enter)键后getchar(),才开始从缓存空间逐一开始读取数据,注意getchar(),读取数据是逐一、单个读取的,也就是一次只读取一个字符的值,返回对应字符的ASCII码值。

B、理解上面内容,那么:

a、如果想要检测输入的字符是哪一个,可以用getchar()和对应字符的ASCII值进行比较,注意比较的形式必须是:

例如:if(getchar() != a || getchar() != \n)的这种形式,即检测从键盘上输入的是不是a或者回车。

b、getchar()从缓存里面读取数据,直到它读取到回车键时才结束

c、如果从键盘上输入一连串的字符

例如:输入adndjdjejd3458jjjfkal按下回车键(他也会被getchar读取),缓存区中内容为adndjdjejd3458jjjfkal\n

d、scanf()函数从缓存区读取数据的时候,不读取回车键,不返回回车键的值;getchar()函数从缓存区读取数据的时候,读取回车键,而且会将回车键的值进行返回,同时读取回车后结束本次读入

那么,在使用完scanf或者getchar之后如果还有输入函数,甚至scanf遇到非法输入结束,下一个函数必然会读取他们在缓冲区遗留的垃圾,这就是其缺陷所在。

(2)putchar不带自动换行

举例:

1、/*输入a b时取到的ch2是空格(输入时产生的)*/

#include int main(int argc, const char *argv[])

{

char ch1;

char ch2;

char ch3;

ch1 = getchar();

ch2 = getchar();

ch3 = getchar();

printf("mun = %d\n",ch2);

putchar(\n);

printf("ch1 = %c, ch2 = %c\n",ch1,ch2);

return 0;

}

5、字符串输入输出gets和puts

(1)gets函数不以空格作为字符串输入结束的标志,而以回车作为结束标志。

缺陷:由于c语言中数组的长度必须事先给定,所以输入很容易超出这个长度,数组越界(这是很严重的问题)

(2)puts函数在输出字符串时,会自动追加\n。使用时,注意字符数组必须以\0结束。

c语言输出数以空格格开,C语言输入输出函数格式详解.docx相关推荐

  1. c语言中向计算机输入一个字符的函数是,计算机c语言输入输出函数格式详解.docx...

    1.输入和输出: 输入:输入也叫读,数据由内核流向用户程序 输出:输出也称写.打印,数据由用户程序流向内核 以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用 2.printf用 ...

  2. unturned服务器配置文件,《Unturned》使用Bottle开3.0服务器方法图文详解

    <Unturned>使用Bottle开3.0服务器方法图文详解 2015-02-03 17:04:07来源:贴吧编辑:评论(0) <Unturned>游戏中玩家们可以联机作战, ...

  3. C语言:JSON格式详解

    C语言:JSON格式详解 C语言:cJSON库用法详解 C语言:使用cJSON库构造JSON C语言:使用cJSON库解析JSON字符串 JSON 简介 JSON全称 JavaScript Objec ...

  4. sort在c语言中的作用,c语言中sort的用法详解.docx

    c语言中sort的用法详解.docx C语言中SORT的用法详解C语言的学习很多是比较复杂的,那么C语言中SORT的用法的用法你知道吗下面学习啦小编就跟你们详细介绍下C语言中SORT的用法的用法,希望 ...

  5. Android Studio打不开虚拟机,两种情况详解

    Android Studio打不开虚拟机,两种情况详解 文章目录 Android Studio打不开虚拟机,两种情况详解 1.VT-x is disabled in BIOS 2.Emulator文件 ...

  6. Flutter开发之iOS后台定位开发详解

    Flutter开发之iOS后台定位开发详解 需求目的 开发一个功能持续获取用户的位置发送给后端,PC端会根据后端传来的移动端发送的位置信息,来绘制使用者的运动轨迹. 实现需求 是否实现 后台定位 ✅ ...

  7. c 语言的输出函数cout,详解C++ cout格式化输出完全攻略

    写算法题的时候突然发现自己忘记基本的C++:cout格式化输出了,赶紧拉出以前的C++学习笔记重新看一看. 部分内容来自教程:C语言中文网(一个很棒的网站) 有时希望按照一定的格式进行输出,如按十六进 ...

  8. c语言输出整数n的所有素数因子,输入一个正整数 输出它的所有质数因子的c语言程序...

    编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. #includevoidmain(){inti,z,x,y,j;printf("pleaseinput ...

  9. 用计算机c语言输出你好,编写第一个C语言程序 - Hello World

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

最新文章

  1. webform(七)分页
  2. blender硬表面建模渲染终极教程
  3. 什么是奇异值?奇异值分解是什么?SVD分解详解及实战
  4. Apache与Nginx的优缺点比较
  5. C++ Primer 5th笔记(chap 15 OOP)访问控制与继承
  6. SpringSession实现用户会话
  7. Linux-yum在线安装svn步骤
  8. 20210701:随机信号的功率谱估计相关算法的实现
  9. shop--6.店铺注册--店铺注册之Service层的实现
  10. Linux二进制保护(文末福利)
  11. 页面加载中的css,JS+CSS实现网页加载中的动画效果
  12. python文件对象提供了3个读方法、分别是-案例驱动式Python基础与应用-超星尔雅-学习通-题库零氪...
  13. Python数据库编程之pymysql详解
  14. mysql 查找员工入职时间
  15. Android 12新功能:使用SplashScreen优化启动体验
  16. 不积跬步无以至千里013
  17. java bigdecimal 取整数_java-检查BigDecimal是否为整数值
  18. 2020年主流服务器主板,电脑主板怎么选(2020电脑主板选购指南及检测)
  19. SAP UI5 应用开发教程之一百 - 如何修改 SAP UI5 框架的源代码实现,以及使用本地部署的 SAP UI5 SDK 试读版
  20. Webpack的基本使用

热门文章

  1. Nginx的编译安装及基本使用
  2. 使用Nvidia GTX 1080TI&GTX 1070构建密码破解机
  3. 动态网格与自动拓扑的区别
  4. Flutter学习-单子布局Widget
  5. Flutter之Decoration(编写圆角竖线)
  6. 需求分析(Requirements Analysis)
  7. 收集 Linux 相关专业术语发音
  8. mysql tokudb innodb_TokuDB vs Innodb 基准测试对比
  9. nosql | Mongodb启动失败以及节点丢失等问题总结
  10. 基于DJYOS的物联网危险源智能监测平台