ifstream fin.read是怎么搞的?

chenhaifeng88888 2009-05-10 09:36:18

ifstream fin.read是怎么搞的?

const int MAX_CHAR_IN = 20;

fin.read(buf, MAX_CHAR_IN);
printf("%s\n", buf);


输出怎么这样
gelfj
fdsajlkfja sdjONNAME=Conso

fjsfdkljf asdkfjla ja sdjONNAM
fskljdjfsad;lk jf
fsja sdjONNAM
djlkfja's d
fasfjdklja sdjONNAM
asdjfasd

d
fasfjdklja sdjONNAM

原始输入
gelfj
fdsajlkfja sdj
fjsfdkljf asdkfjla fskljdjfsad;lk jf
fsdjlkfja's d
fasfjdklasdjfasd

后面那些什么NNAME=之类的是什么啊
...全文
1080 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2009-05-11
  • 打赏
  • 举报
回复
get()和getline()就会自动添加结束符
pengzhixi 2009-05-11
  • 打赏
  • 举报
回复
就好比输出一个没有初试化的字符串,他也是一直输出知道遇到结束符为止
pengzhixi 2009-05-11
  • 打赏
  • 举报
回复
因为你的buf是没有终止符'\0'的,因为read函数是不会自动帮你加终止符的,所以你在输出buf时候是一直输出知道出现终止符为止.所以输出的内容不确定
chenhaifeng88888 2009-05-11
  • 打赏
  • 举报
回复

后面加这一句话,就可以了
fin.read(buf, MAX_CHAR_IN);
int size = fin.gcount();
buf[size] = 0;
lingyin55 2009-05-10
  • 打赏
  • 举报
回复
读入的应该是MAX_CHAR_IN个字符,但是输出的时候它是把buf当做一个字符串来输出的,
所以才说要把buf添加一个结束符。

你把整段代码包括读文件的贴上来看看。

[Quote=引用 5 楼 chenhaifeng88888 的回复:]
引用 4 楼 lingyin55 的回复:
最后加上一句

char buf[MAX_CHAR_IN] = '\0';

引用 3 楼 chenhaifeng88888 的回复:
引用 2 楼 lingyin55 的回复:
buf初始化一下,比如
char buf[MAX_CHAR_IN] = {0};

初始化了

关键是读入的不是MAX_CHAR_IN个字符?为什么



这也试了,没有用,关键是读入的不是MAX_CHAR_IN个字符?为什么
[/Quote]
chenhaifeng88888 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lingyin55 的回复:]
最后加上一句

char buf[MAX_CHAR_IN] = '\0';

引用 3 楼 chenhaifeng88888 的回复:
引用 2 楼 lingyin55 的回复:
buf初始化一下,比如
char buf[MAX_CHAR_IN] = {0};

初始化了

关键是读入的不是MAX_CHAR_IN个字符?为什么

[/Quote]

这也试了,没有用,关键是读入的不是MAX_CHAR_IN个字符?为什么
lingyin55 2009-05-10
  • 打赏
  • 举报
回复
最后加上一句

char buf[MAX_CHAR_IN] = '\0';

[Quote=引用 3 楼 chenhaifeng88888 的回复:]
引用 2 楼 lingyin55 的回复:
buf初始化一下,比如
char buf[MAX_CHAR_IN] = {0};

初始化了

关键是读入的不是MAX_CHAR_IN个字符?为什么
[/Quote]

chenhaifeng88888 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lingyin55 的回复:]
buf初始化一下,比如
char buf[MAX_CHAR_IN] = {0};
[/Quote]
初始化了

关键是读入的不是MAX_CHAR_IN个字符?为什么
lingyin55 2009-05-10
  • 打赏
  • 举报
回复
buf初始化一下,比如
char buf[MAX_CHAR_IN] = {0};
liliangbao 2009-05-10
  • 打赏
  • 举报
回复
帮顶~~~

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧