C 输入、输出库函数学习总结(printf scanf, gets puts, fgets fputs, getchar putchar)

本文主要是介绍C 输入、输出库函数学习总结(printf scanf, gets puts, fgets fputs, getchar putchar),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C 输入、输出库函数分为“字符串处理”“字符处理”,下面就分别总结下,欢迎大家拍砖:

字符串处理:printf & scanf, gets & puts, fgets & fputs(主要用于文件处理,但也可以用于标准的输入输出)

scanf("%s",str):匹配连续的一串非空白字符,遇到空格、tab或回车即结束。-----常用与单词的输入

printf(“%s”,str): 输出到'\0'结束,遇到空格不停,不增加换行符\n;


gets(s):用来从标准输入设备(键盘)读取字符串直到换行符\n结束,但换行符会被丢弃,然后在末尾添加'\0'字符。

puts(s):用来向标准输出设备(屏幕)写字符串是输出到'\0'结束,遇到空格不停,会在结尾增加换行符\n;


fgets():用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符(此换行字符\n会存储下来)、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束(NULL是一个空指针,包含在stdio.h库函数里,)。

fputs():向指定的文件写入一个字符串,puts向标准输出写入一个字符串。缓冲区s中保存的是以'\0'结尾的字符串,fputs将该字符串写入文件stream,但并不写入结尾的'\0',也不自动添加回车符\n


由于gets()函数并不包含检查目标数组是否能够容纳输入,所以很不安全,利用此弱点,用很长的输入覆盖操作系统的代码,就是之前UNIX 网络传播的“蠕虫病毒”。因此在《C Primer Plus 5th edit》书中提到:重要的编程应采用fgets()。

也就是常常在linux编译过程中的警告:warning: the `gets' function is dangerous and should not be used.

                                                        或者:warning:  `gets'  is deprecated(declared at /usr/inlude/stdio.h...)


字符处理:getchar & putchar

getchar():用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止,getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

putchar():向终端输出一个字符----一定要用单引号‘’,例如:putchar('\n')-----打印换行符; 而不能用putchar("\n"),将打印乱码,因为双引号""表示是一个字符串



这篇关于C 输入、输出库函数学习总结(printf scanf, gets puts, fgets fputs, getchar putchar)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020087

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06