C ++数组输出文件导致-memory地址

时间:2016-05-17 16:37:05

标签: c++ visual-studio-2015

所以,我从我的教科书中复制了一个程序,给它一个测试,并且输出有问题。该计划很简单:

(当我运行程序VS说程序已经过时;我不知道问题是否存在。)

//This program reads data from a file into an array
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    const int Array_size = 10; //array size
    int numbers[Array_size];  //array with 10 elements
    int count = 0;   //loop counter variable
    ifstream inputFile;   //input file stream object

    //opent the file
    inputFile.open("C:/TenNumbers.txt");

    if (!inputFile)
    {
        cout << "Unable to open file" << endl;
        return 0;
    }

    //read the numbers from the file into the array
    while (count < Array_size && inputFile >> numbers[count])
        count++;

    //close the file
    inputFile.close();

    //display the numbers read
    cout << "The numbers are: ";
    for (count = 0; count < Array_size; count++)
        cout << numbers[count] << " ";
    cout << endl;
    system("pause");
    return 0;

}

输出结果为:

enter image description here

,控制台调试是:

  

&#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Visual Studio 2015 \ Projects \ project7.3 \ Debug \ project7.3.exe&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ ntdll.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ kernel32.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ KernelBase.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ msvcp140d.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ vcruntime140d.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ advapi32.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ ucrtbased.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ msvcrt.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ sechost.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ rpcrt4.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ sspicli.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ cryptbase.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ bcryptprimitives.dll&#39;。符号已加载。   &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ kernel.appcore.dll&#39;。符号已加载。   线程0x6e44已退出,代码为0(0x0)。   线程0x68ac已退出代码0(0x0)。   线程0x5978已退出,代码为0(0x0)。   线程0x56ec已退出,代码为0(0x0)。   该程序&#39; [7220] project7.3.exe&#39;已退出代码0(0x0)。

以下是notepad ++中文本文件的内容。我根据在线发现的信息将编码从UTF8更改为ANSI:

//此文件支持visual studio 2015中的program7.3 101 102 103 104 105 106 107 108 109 110

1 个答案:

答案 0 :(得分:1)

以下块中的消息具有误导性。

if (!inputFile)
{
    cout << "file open" << endl;
}

应该是

    cout << "Unable to open file" << endl;

之后,无论如何,当你应该拯救时,你继续阅读数据。

if (!inputFile)
{
    cout << "Unable to open file" << endl;
    return EXIT_FAILUIRE;
}

由于没有从文件中读取任何内容,您将获得虚假数据。

然后,您继续显示所有数据。您只需显示已成功读取的数据。使用:

//display the numbers read
cout << "The numbers are: ";
for (int i = 0; i < count; i++)
    cout << numbers[i] << " ";
cout << endl;