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

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义