【学习记录】标准IO(2)
发布日期:2023-11-14 11:28:33 浏览次数:29 分类:技术文章

本文共 1406 字,大约阅读时间需要 4 分钟。

标准IO的字符输入和输出

  • 字符的输入(读单个字符):
    int fgetc(FILE *stream);
    int getc(FILE *stream); //宏
    int getchar(void);
    成功时返回读取的字符;若到文件末尾或出错时返回EOF(-1),
    getchar()等同于fgetc(stdin)
    getc和fgetc区别是一个是宏一个是函数
  • 注意事项:
    1函数返回值是int类型不是char类型,主要是为了扩展返回值的范围。
    2 tdin 也是FILE *的指针,是系统定义好的,指向的是标准输入(键盘输入)
    3 打开文件后读取,是从文件开头开始读。读完一个后读写指针会后移。读写注意文件位置!
    4 调用getchar会阻塞,等待你的键盘输入
  • 字符的输出(写单个字符):
    int fputc(int c, FILE *stream);
    int putc(int c, FILE *stream);
    int putchar(int c);

成功时返回写入的字符;出错时返回EOF

putchar©等同于fputc(c, stdout)
注意事项:
1返回和输入参数都是int类型
2遇到这种错误:Bad file descriptor, 很可能是文件打开的模式错误(只读模式去写,只写模式去读)

行输入(读取整个行)

char *gets(char *s); 读取标准输入到缓冲区s
char *fgets(char *s, int size, FILE *stream);

成功时返回s,到文件末尾或出错时返回NULL

遇到’\n’或已输入size-1个字符时返回,总是包含’\0’

注意事项:

1 gets函数已经被淘汰,因为会导致缓冲区溢出
2 fgets 函数第二个参数,输入的数据超出size,size-1个字符会保存到缓冲区,最后添加’\0’,如果输入数据少于size-1 后面会添加换行符。

行输出(写整行)

int puts(const char *s);

int fputs(const char *s, FILE *stream);

成功时返回非负整数;出错时返回EOF

puts将缓冲区s中的字符串输出到stdout,并追加’\n’
fputs将缓冲区s中的字符串输出到stream,不追加 ‘\n’

二进制读写

文本文件和二进制的区别:

存储的格式不同:文本文件只能存储文本。

计算机内码概念:文本符号在计算机内部的编码(计算机内部只能存储数字0101001…,所以所有符号都要编码)

二进制读写函数格式:

size_t fread(void *ptr, size_t size, size_t n, FILE *fp);
void *ptr 读取内容放的位置指针
size_t size 读取的块大小
size_t n 读取的个数
FILE *fp 读取的文件指针

size_t fwrite(const void *ptr, size_t size, size_t n, FILE *fp);

void *ptr 写文件的内容的位置指针
size_t size 写的块大小
size_t n 写的个数
FILE *fp 要写的文件指针

注意事项:

文件写完后,文件指针指向文件末尾,如果这时候读,读不出来内容。
解决办法:移动指针(后面讲解)到文件头;关闭文件,重新打开

转载地址:https://blog.csdn.net/Zhyoung_/article/details/131276692 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【学习记录】深度学习
下一篇:【学习记录】标准IO(1)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年11月27日 20时29分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

l310加完墨水后需要怎样设置_潜伏100个同行后,发现灯箱常用的画面输出方式是这4种!... 2019-06-17
opcache php 原理_PHP Opcache工作原理 2019-06-17
楷书书法规则_纯干货 | 史上最全硬笔书法入门常识!(果断转发) 2019-06-17
r矢量球坐标系旋度_基础篇1: CFD中的矢量 2019-06-17
matlab有趣表白程序_只工作,不上班——程序设计200,养生文案50,抖音文案200,方案设计... 2019-06-17
java实现多线程抢单_java学习中多线程同步和互斥有哪些实现方法 2019-06-17
大移动电子竞赛设计培训网_6大专题带你轻松备战|全国大学生电子设计竞赛 2019-06-17
mysql的NLJ_深入Mysql 2019-06-17
2012二级java真题_2012年计算机二级JAVA第七套模拟试题及答案详解 2019-06-17
java 2 2_Java 2.2 2019-06-17
java (int)object_在java上将int转换为Object 2019-06-17
java分发器_SpringMVC源码阅读:核心分发器DispatcherServlet 2019-06-17
java简易浏览器_简易浏览器代码(JAVA) 2019-06-17
ufo末日余晖java下载_幽浮:末日余晖 2019-06-17
efficient in Java_Efficient support for in-place metadata in Java software transactional memory 2019-06-17
java gui小程序_Java GUI 小程序 任意圆之间的带箭头的连线并可以存储 2019-06-17
java 更新word目录_java aspose.words 生成word目录和更新目录 2019-06-17
matlab数字信号处理实验报告,Matlab数字信号处理实验报告.pdf 2019-06-17
centos php memcache扩展,CentOS系统安装memcached和PHP的memcache扩展 2019-06-17
关于php的语法,关于PHP语法 2019-06-17