将元素添加到数组但打印错误的值

时间:2016-11-01 05:01:01

标签: c++ arrays

我用C ++编写了这个程序,它读取包含这些数字的input.txt文件 7 18 五 15 131 11 13 287

程序向数组添加第一个值7,然后在接下来的七个数字中添加随机值(例如0,4659174,0,4778144等),然后打印7和18,然后再打印8个随机数,然后你可以看到打印7,18,5等,直到最后八个数字是input.txt文件中的实际数字。

如何让它只显示input.txt文件中的数字而不是所有这些随机值?到目前为止,这是我的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <stdlib.h> 

using namespace std;

int main(){
    int myArray[10];
    int i = 0;
    ifstream input("input.txt");
    string number = "";
    char next_letter = '\0';

    while (input.get(next_letter)){
        while (isdigit(next_letter) && !input.eof()){
            number += next_letter;
            input.get(next_letter);
        }

        int val = 0;
        val = atoi(number.c_str());


        myArray[i++] = val;

        for(int i = 0; i < 8; i++)
        {
            cout << "array contents are: " << myArray[i] << endl;
        }
        number = "";
     }

     return 0;
}

1 个答案:

答案 0 :(得分:0)

请考虑以下代码:

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <stdlib.h>
#include <cstdlib>

using namespace std;

int main(){
    long myArray[10];
    int i = 0;
    ifstream input("input.txt");
    string number = "";
    const int MAX_LEN = 100;
    char number_str[MAX_LEN];

    while(input.getline(number_str, MAX_LEN - 1, ' ')){
        char* end;
        myArray[i++] = std::strtol(number_str, &end, 10);
    }

    cout << "array contents is: ";
    for(int k = 0; k < i; k++)
    {
        cout << myArray[k] << " ";
    }

    cout << endl;
    return 0;
}

getline执行阅读,直到' '转换由strtol完成。请注意,默认情况下输入的数字为long int