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

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL