C++ 文件读写问题 大家来看看出了什么问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:29:42
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void main()
{ char i[20]="I LOVE YOU";
char b[11];
ofstream out("gogo.txt");
int j=0;
out.write(i,strlen(i));
ifstream in("gogo.txt");

while(!in.eof()||j<strlen(i))
in.get(b[j++]);

cout<<b;
out.close();
in.close();
}

输出为“烫烫烫烫烫烫I LOVE YOU”
晕 问题出在哪啊???

我认为是这样:
ofstream建立文件gogo.txt后,往里写入数据并不会立刻出现在磁盘文件上,要等到out.close()之后才会真正写入磁盘。
你得ifstream读数据是在这之前,也就是说读的时候gogo.txt是空文件,什么都没有。正确的做法是out.close()之后再ifstream in("gogo.txt")。
另外读完了b之后没有在末尾加NULL,这也是一个错误。
两个错误加在一起,就导致你看到的输出。输出的一堆烫是0xcccc吧大概,就表示b里没有值;后面I LOVE YOU其实是i里的数据。虽然你输出的是b,但因为b没有NULL,就导致把后面i数组也给输出了。

怎么可以同时打开!至少应该先关一个啊。