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

相关文章

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push