以上四个函数都是读取外部输入的函数。可以使stdin,也可以是文件。以下都是在C语言中的应用

关于gets和fgets都能够读取一行,一行结束的标志是“回车”。都有弊端gets(s),其中s为字符型数组,假设char s[3];那么即使我输入hello,s中仍然能够盛放得下,这是不对的!因为C语言不禁止程序读写“非法内存”。

fgets也是如此,假设char s[3];文件描述符fin指向的文件内容为hello。fgets(s,6,fin);s虽然只有三个字节空间,但仍然能盛放hello和最后的字符串结束标志'\0'。这也是不对的!需要注意的是,要想读取完整的hello,fgets中的第二个参数需要填6,而不是5,因为这个函数会自动为字符串预留一个'\0',如果参数为5,读取返回值就为hell\0。

以上两者返回值均为读取到的字符串,好处就在于他们对空格,制表符不敏感(这一点强于scanf)。

关于getchar,用法c=getchar();默认从标准输入中读取一个输入的字符。

关于fgetc,用法和getchar类似,不过可选输入来源是fgetc(stdin)(标准输入),fgetc(fin)(文件输入)。返回值仍然是读取的字符。如果读到文件末尾也就是EOF,返回值为-1

gets,fgets,getchar,fgetc的更多相关文章

  1. PHP 文件读取 fread、fgets、fgetc、file_get_contents 与 file 函数

    fread().fgets().fgetc().file_get_contents() 与 file() 函数用于从文件中读取内容. fread() fread() 函数用于读取文件(可安全用于二进制 ...

  2. PHP读取文件函数fread,fgets,fgetc,file_get_contents和file函数的使用总结

    fread().fgets().fgetc().file_get_contents() 与 file() 函数用于从文件中读取内容. 1.fread() fread()函数用于读取文件(可安全用于二进 ...

  3. 009PHP文件处理——文件处理 file_get_contents file_put_contents fgetc fgets fgetss

    <?php /** * 文件处理 file_get_contents file_put_contents fgetc fgets fgetss */ //fgetc() 传入文件操作句柄.每次获 ...

  4. fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结

    转载自:http://blog.csdn.net/xidianzhimeng/article/details/23541289 1 fopen 函数原型:FILE * fopen(const char ...

  5. C语言的基本输入与输出函数(全解)

    C语言的基本输入与输出函数 1.1.1 格式化输入输出函数 Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以 ...

  6. The difference between macro and function I/Ofunction comparision(from c and pointer )

    macro is typeless and execute faster than funtion ,becaus of the overhead of calling and returnning ...

  7. UNIX环境高级编程---标准I/O库

    前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...

  8. linux 标准I/O (一)

    在前面<UNIX环境高级编程----文件描述符浅析>一文中所讲的I/O函数都是针对文件描述符.而对于标准I/O库,它们的操作都是围绕流来进行的.当用标准I/O库打开或创建一个文件时,我们已 ...

  9. 标准I/O库

    前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...

  10. APUE(5)---标准I/O库 (2)

    六.读和写流 一旦打开了流,则可在3种不同类型的非格式化I/O中进行选择,对其进行读.写操作:1)每次一个字符的I/O,一次读或写一个字符,如果刘时代缓冲的,则标准I/O函数处理所有缓冲:2)每次一行 ...

随机推荐

  1. Gtiee_上传本地项目

    Git_本地代码上传到码云 本文仅作学习记录,方便日后翻看 创建本地仓库 找到自己本地代码的文件夹,打开Git GUI Here,输入git init创建本地仓库,当前文件夹下有.git文件表示创建成 ...

  2. Go 在 linux 上安装

    在 linux 安装 GO 有两种方式. 一种是使用 apt-get 命令安装. 第二种是使用 安装包安装 使用 apt-get 安装 sudo apt-get update #更新安装列表 apt- ...

  3. ATX server简介及环境搭建

    简介 atx server 是移动设备管理平台: 搭建这样的一个平台,需要  python3.x + nodejs+rethinkdb,及atxserver2和atxserver2-android-p ...

  4. JAVA学习笔记-09

    多线程: 进程:就是正在执行中的程序,每一个进程执行都有一个执行的顺序,该顺序是一个执行路径.或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行 一个进程中至少有一个线 ...

  5. Mysql数据库的表结构

    [INFORMATION_SCHEMA 数据库] 是MySQL自带的,它提供了访问数据库 元数据 的方式, 元数据:数据库名或表名,列的数据类型,或访问权限等. 在MySQL中,把[INFORMATI ...

  6. Oracle一次插入多条数据

    Oracle一次插入多条数据(批量插入)语法:INSERT ALL  INTO tableName (column1, column2, column_n) VALUES (expr1, expr2, ...

  7. vue-cli3配置打包后的文件加上版本号

     修改vue.config.js

  8. Debian 迁移到新硬盘

    老硬盘 A,新硬盘 B,先把B分好区,做好格式化. 准备虚拟机一台,Linux LiveCD光盘或者可用的Linux虚拟机系统,把硬盘A B 映射成虚拟机可以使用的硬盘文件,根据LiveCD新建相应的 ...

  9. mysql and or优先级

    and优先级高于or, 不使用()情形:or后仍遇到and时,先算and再算or select * from table1 where f1=1 and f2=2 or f3=3 and f4=4 o ...

  10. ubuntu22.04 交叉编译openwrt

    国内源vi /etc/apt/sources.listdeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted un ...