在我阅读文件后写入文件后,我得到了意想不到的输出 我写的代码是:
#include<fstream.h>
#include<conio.h>
#include<string.h>
struct test
{
char que[100];
char ans[20];
};
int main()
{
test s, d;
clrscr();
ofstream out("test.dat", ios::binary | ios::app);
ifstream in("test.dat", ios::binary | ios::in);
strcpy(s.que, "2.How many ways the letters of the word abas be arranged to form words with or without meaning");
strcpy(s.ans, "180");
out.write((char*) &s, sizeof(test));
while(!in.eof())
{
in.getline((char*) &d, sizeof(test));
cout << d.que << '\n' << d.ans;
}
getch();
return 0;
}
我得到的输出是:
2.How many ways the letters of the word abas be arranged to form words with or w
ithout meaning
180
180
这是我与之相处的一些任意字符的输出。
我做错了什么?为什么我在s.ans
中存储的字符串也会写入s.que
?
答案 0 :(得分:0)
我通过以下更改来实现此目的:
out.close()
以刷新输出缓冲区。getline
替换为read
,以检索write
写入的字节。 getline
可能会在某些条件下给出不同的结果。将read语句移至while
条件:
while(in.read((char *) &d, sizeof(test)))
在循环体in.eof()
中的read语句在读取最后一个test
对象后不会立即返回true,因此循环将最后一次执行。