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学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

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