Ошибка Visual Studio: невозможно запустить программу (невозможно запустить программу)

Я хотел бы знать, почему, запустив следующий код, появляется окно, в котором говорится:

программа не может быть запущена

с последующим:

Указанный файл не может быть найден

Он также выдает следующие ошибки:

'fopen': эта функция или переменная может быть небезопасной. Попробуйте вместо этого использовать fopen_s. Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS.

'fprintf': неизвестный символ поля типа '' в спецификаторе формата

Цель программы:

  1. Открыть и прочитать файл .txt
  2. Сортировка информации в порядке возрастания по номеру самолета.
  3. Сохраните упорядоченные данные в новом файле.
  4. Поиск данных в соответствии с типом самолета.

Не могли бы вы помочь мне, есть ли ошибка в коде?

#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "conio.h"
#define n 7

using namespace std;

struct AEROFLOT
{
    char name[20];
    int number;
    char plane[10];
} *pm;

void Print(AEROFLOT*);
void WriteFile(AEROFLOT*, char*);
void Sort(AEROFLOT*);
void InputType(AEROFLOT*);

int main()
{
    const char *fname = "C:\\Users\\User\\Documents\\aeroflot.txt";

    FILE* file = fopen(fname, "rb");
    if (file != NULL) {
        pm = new AEROFLOT[n];
        fread(pm, sizeof AEROFLOT, n, file);
        fclose(file);
    }
    else
    {
        cout << "Error opening file!" << endl;
        return 1;
    }
    cout << "List of airplanes: ";
    Print(pm);
    Sort(pm);
    cout << "Sorted list: ";
    Print(pm);
    WriteFile(pm, "C:\\Users\\User\\Documents\\aeroflot1.txt");
    InputType(pm);
    delete [] pm;
    _getch();
}

void Print(AEROFLOT array)
{
    for (int i = 0; i < n; i++) 
    {
        cout << "Destination: " << array.name << endl;
        cout << "Number of airplane: " << array.number << endl;
        cout << "Type of airplane: " << array.plane << endl;
        cout << "-----------------------------------\n" << endl;
    }
}

void WriteFile(AEROFLOT* array, char* fname) 
{
    FILE* file;
    file = fopen(fname, "wt");
    if (!file) cout << "Error opening file!" << endl;

    for (int i = 0; i < n; i++)
    {
        fprintf(file, "%10s -- %5 -- %10s\n", array[i].name, array[i].number, array[i].plane);
    }
    fclose(file);
}

void Sort(AEROFLOT* array)
{
    int index;
    for (int i = 0; i < n; i++)
    {
        index = i;
        AEROFLOT tmp;
        for (int j = i + 1; j < n; j++)
        {
            if (array[index].number < array[j].number)
                index = j;
        }
        if (index != i)
        {
            tmp = array[i];
            array[i] = array[index];
            array[index] = tmp;
        }
    }
}

void InputType(AEROFLOT* array)
{
    char* type;
    cout << "\nEnter type of airplane: "; cin >> type; 
    cout << endl;

    for (int i = 0; i < n; i++)
    {
        if (type == array[i].plane)
        {
            cout << "Destination: " << array[i].name;
            cout << "Number of airplane: " << array[i].number << endl;
        }

        else
        {
            cout << "There isn't an airplane of this type." << endl;
        }
    }
}
0
задан 01.11.2016, 17:23
2 ответа

Я хотел бы знать porqué, заставив скроллировать следующий код выходит ventanita, в котором он говорит:

не возможно инициализировать program

продолженный:

не возможно находить определенный файл

Эта ошибка может встречаться, потому что в конфигурации проекта VS маршрут поколения выполнимого и маршрут выполнения того же самого не совпадают.

Если ты открываешь панель свойств твоего проекта:

Ты сможешь видеть панель с несколькими выборами, титул которых будет tu proyecto Property Pages.

Выборы, которые ты будешь должен проверять:

  • Configuration Properties.
    • Генерал.
      1. Output Directory: маршрут скопирует выполнимый файл, который твое приложение производит.
    • Debugging.
      1. Command: ему будет дана команда операционной системе, чтобы выполнять программу.
      2. Working Directory: маршрут выполнения твоей программы, это: маршрут, с которого программа увидит файлы и папки.

Если ты не коснулся выделенных этих выборов, у них должна бы быть стандартная настройка $(OutDir), $(TargetPath) и $(ProjectDir) соответственно и все было бы должно функционировать с нормальностью.

Если ты коснулся какого-то из выборов, эти будут видеться в полужирном шрифте, и если маршруты - неправильные VS, не могите находить выполнимый файл, показывая ошибки, похожие на тех, которых ты описываешь.

Могло бы случаться, что ты не коснулся этих выборов, но что они все же конфигурировались плохо...: ты загрузил проект из-за Интернета или это произвел с каким-то инструментом как Make?


Кроме того дай эти ошибки:

'fopen': Изменчивый This function or май be unsafe. Consider using fopen_s instead. To disable deprecation, использовал _CRT_SECURE_NO_WARNINGS.

'fprintf': unknown type field character '' in format specifier

Эти ошибки достаточно авто-объяснительные.

Первая ошибка показывает, что функция fopen она считается мало безопасной и советует использовать fopen_s в Вашем месте. fopen принадлежи книжным магазинам C приспособленные в C ++ (в этом случае он составляет часть заголовка <cstdio>).

Обычно многие из функций книжных магазинов C считаются небезопасными из-за того, что не могут быть использованными в конкурирующих средах, потому что они не делают проверки избытка буфера или недействительных / недействительных указателей или в пользу всех этих мотивов одновременно; чтобы пробовать решать эти проблемы предлагаются безопасные функции, у которых обычно есть суффикс _s.

Вторая ошибка показывает, что ты добавил отметку формата, неизвестную в функции fprintf, самые обычные отметки формата ты можешь видеть их здесь.

Между разрешенными отметками формата он не %5 который ты используешь здесь:

fprintf(file, "%10s -- %5 -- %10s\n", array[i].name, array[i].number, array[i].plane);

То, что конечно производит ошибку.

1
ответ дан 24.11.2019, 12:49

Из-за ошибки "не возможно находить определенный файл" ты уверен, что правилен path и tenés необходимые разрешения?

Из-за этого warning "'fopen': Изменчивый This function or май be unsafe. Consider using fopen_s instead. To disable deprecation, использовал _CRT_SECURE_NO_WARNINGS."

Такой Agregá как первая линия кода это:

#ifdef _WIN32 
#define _CRT_SECURE_NO_DEPRECATE 
#endif

или usá fopen_s

Для "'fprintf': unknown type field character '' in format specifier"

обрати внимание, что 2-ой параметр fprint говорит %5, тебе не хватает d => %5d

0
ответ дан 24.11.2019, 12:49

Теги

Похожие вопросы