|
发表于 2019-4-4 14:58:55
|
显示全部楼层
首先,你输出的时候使用的app模式
- ofstream outdata("D:\\sh.txt", ios::app);
复制代码
那么输出内容的时候只会在之后附加内容,
而打开文件的时候是从头开始读取的,那么sh.txt之前包含的东西便会影响输出结果
第二、你输出的时候没有在数据中间加任何分隔符
试想,你a[0]到a[7]分别等于0 1 2 3 4 5 6 7,那么输出的时候是什么样
01234567 ,重新读取的时候会把这01234567当一个整体,于是
b[0]=1234567 ,而b[1]-b[7]读不出来任何东西,
反复执行的话,数据还会变成012345670123456701234567,这个时候再读,连b[0]都不能读出正确的数据了
问题就这两个问题,修改后的程序如下- #include <fstream>
- #include<iostream>
- using namespace std;
- int main()
- {
- int a[8], b[8], i;
- ifstream indata;
- ofstream outdata("D:\\sh.txt"); //去掉ios:app标识
- if (!outdata)
- {
- cerr << "打开失败!";
- return -1;
- }
- for (i = 0; i < 8; i++)
- {
- cin >> a[i] ;
- }
- for (i = 0; i < 8; i++)
- {
- outdata << a[i] <<" "; //加入分隔符
- }
- outdata.close();
- indata.open("D:\\sh.txt");
- for (i = 0; i < 8; i++)
- {
- indata >> b[i];
- }
- for (i = 0; i < 8; i++)
- {
- cout << b[i]<<" ";
- }
- indata.close();
- system("pause");
- return 0;
- }
复制代码
|
|