Как вы используете функцию в Xcode C ++, чтобы получить имя входного файла от пользователя? Я не могу заставить мой код работать - PullRequest
0 голосов
/ 22 октября 2019

ИМЯ ИСПРАВЛЕНО-ФАЙЛА СЛИШКОМ ДОЛГО Я не могу понять, что не так с приведенным ниже кодом. Входной файл - это просто текстовый файл с восемью четырьмя, разделенными пробелами. Итак, что происходит, когда я запускаю код, я получаю сообщение об ошибке из Xcode, где я вызываю функцию "get_stream(in_s);".

Это происходит после того, как я сообщаю ему имя файла. Он говорит «сигнал sigabrt», и когда я продолжаю отладку, он говорит:

"EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"

Я уже изменил, откуда программа получает входной файл и поместил туда входной файл. Забавно то, что я считаю, что на других системах он может работать нормально, но не на позитиве, но никто не испытывал проблем в визуальной студии. Так что это может быть вещь XCode. Я попросил 3 разных профессоров, и один работает над решением, когда у нее будет время, а другие 2 сдались. Я заставил работать аналогичные программы, но они не были одинаковыми и не использовали функцию для получения входного файла. вывод программы EXC_BAD_INSTRUCTION

#include<iostream>
#include<fstream> // Step (1)
#include<cstdlib>
#include<cmath>
using namespace std;

void get_stream(ifstream& in_s); // added function

int main( )
{
double x;
int count = 0;
float sum = 0, avg;
        ifstream in_s; // Step (2)-B - declaration of the stream of type input

get_stream(in_s);
cout << "\t x \t\t x^2 \t\t Current Sum \n";
        cout << "\t === \t\t === \t\t ========== \n";

        while( in_s >> x) // Step (4)-Read all numbers one-by-one to the end of the file
        {
                 sum = sum + x;
                 cout << "\t " << x <<"\t\t " << pow(x,2) << "\t\t " << sum << "\n";
           count++;
        }

     avg = sum/count;

     cout << "\n \t\t The average of these " << count << " numbers is: " << avg << endl;
        in_s.close( ); // Step (5)-Close the connection (close the file)

return 0;
}

void get_stream(ifstream& in_s)
    {

char input_file[15]; // Step (2)-A

        cout << "Please input the input file name \n"; // Step (3)-A Get the file name
        cin >> input_file;

in_s.open(input_file); // Step (3)-B - connect to the input file and test

if(in_s.fail( ))
        {
cout << "Input file opening failed. \n";
           exit(1); // if we couldn't open the file to read from we exit
}
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...