前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一面(87)

基础知识 | 每日一面(87)

作者头像
小林C语言
发布2020-03-26 11:19:35
2550
发布2020-03-26 11:19:35
举报

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:怎样正确的读取二进制文件?我有时看到 0x0a 和 0x0d 混淆了,而且如果数据中包含 0x1a 的话, 我好像会提前遇到 EOF。

小林:读取二进制数据文件的时候你应该用 “rb” 调用 fopen(), 确保不会发生文本文件的解释。类似的, 写二进制文件时, 使用 “wb”。注意文本/二进制区别只是发生在文件打开时: 一旦文件打开之后, 在其上调用何种 I/O 函数无关紧要。

读者:怎样同时向两个地方输出, 如同时输出到屏幕和文件?

小林:直接做不到这点。但是你可以写出你自己的 printf 变体, 把所有的内容都输出两次。下边有个简单的例子:

#include <stdio.h>

#include <stdarg.h>

void f2printf(FILE *fp1, FILE *fp2, char *fmt, ...)

{

va_list argp;

va_start(argp, fmt); vfprintf(fp1, fmt, argp); va_end(argp);

va_start(argp, fmt); vfprintf(fp2, fmt, argp); va_end(argp);

}

这里的 f2printf() 就跟 fprintf() 一样, 除了它接受两个文件指针并同时输出到两个文件。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档