鱼C论坛

 找回密码
 立即注册
查看: 3498|回复: 4

c++文件

[复制链接]
发表于 2019-4-4 10:29:28 | 显示全部楼层 |阅读模式
5鱼币
c++  各位大佬这个从文件读出来的数据怎么是地址呢 有没有从文件读出各种类型数据的方法呀
#include "stdafx.h"
#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[8];
        }
        for (i = 0; i < 8; i++)
        {
                cout << b[i];
        }
        indata.close();
    return 0;
}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-4 10:38:27 | 显示全部楼层
有两个问题:
1. 定义的数组变量int a[8], b[8],在使用之前要初始化。
2. 这条语句:indata >> b[8];是不是应该是:
                   indata >> b[i];
这么使用是越界了。所以变量b的值就是随机数。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-4 11:08:25 | 显示全部楼层
wwhywhy 发表于 2019-4-4 10:38
有两个问题:
1. 定义的数组变量int a[8], b[8],在使用之前要初始化。
2. 这条语句:indata >> b[8];是 ...

我按你说的改了 还是地址 不行
for (i = 0; i < 8; i++)
        {
                indata >> b[8];
        }
应该是这一句的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-4 11:09:11 | 显示全部楼层
wwhywhy 发表于 2019-4-4 10:38
有两个问题:
1. 定义的数组变量int a[8], b[8],在使用之前要初始化。
2. 这条语句:indata >> b[8];是 ...

文件里的数据 就没有到 b 里面
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-4 14:58:55 | 显示全部楼层
首先,你输出的时候使用的app模式
  1. ofstream outdata("D:\\sh.txt", ios::app);
复制代码

那么输出内容的时候只会在之后附加内容,
而打开文件的时候是从头开始读取的,那么sh.txt之前包含的东西便会影响输出结果

第二、你输出的时候没有在数据中间加任何分隔符
  1.           outdata << a[i];
复制代码

试想,你a[0]到a[7]分别等于0 1 2 3 4 5 6 7,那么输出的时候是什么样
01234567 ,重新读取的时候会把这01234567当一个整体,于是
b[0]=1234567 ,而b[1]-b[7]读不出来任何东西,
反复执行的话,数据还会变成012345670123456701234567,这个时候再读,连b[0]都不能读出正确的数据了

问题就这两个问题,修改后的程序如下
  1. #include <fstream>
  2. #include<iostream>
  3. using namespace std;
  4. int main()
  5. {
  6.         int a[8], b[8], i;
  7.         ifstream indata;
  8.         ofstream outdata("D:\\sh.txt");  //去掉ios:app标识
  9.         if (!outdata)
  10.         {
  11.                 cerr << "打开失败!";
  12.                 return -1;
  13.         }
  14.         for (i = 0; i < 8; i++)
  15.         {
  16.                 cin >> a[i] ;
  17.         }
  18.         for (i = 0; i < 8; i++)
  19.         {
  20.                 outdata << a[i] <<" ";  //加入分隔符
  21.         }
  22.         outdata.close();
  23.         indata.open("D:\\sh.txt");
  24.         for (i = 0; i < 8; i++)
  25.         {
  26.                 indata >> b[i];
  27.         }
  28.         for (i = 0; i < 8; i++)
  29.         {
  30.                 cout << b[i]<<" ";
  31.         }
  32.         indata.close();
  33.         system("pause");
  34.         return 0;
  35. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表