В компилятор ничего не выводиться

Суть вопроса:Как вывести на экран название туроператора, и цену путевки, если название курорта начинается на «Трус», а количество дней более 18. Вот что написано в текстовом файле 1) Название курорта 2)Цена 3)Название туроператора 4)колличество дней

Трустровка:10000 Феерия@24

Лазаревское:20000 Альянс@10

Гострусо:30000 Сиеста@19

Трустоба:5900 Корал@17

Алдер:6780 Веди@20

Трустервазия:25000 Туристическая@20 Мой код:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include<fstream>
#include <WINDOWS.h>
using namespace std;

struct pytivka
{
    char nazvaniekyrorta[100];
    int cenapytivki[100];
    char nazvanieoperatora[100];
    int colvodnei[100];
}object;

int main()
{
    setlocale(LC_ALL, "Ru");
    ifstream phile("pytivka.txt");
    if (!phile.is_open())
    {
        cout << "Ошибка открытия файла!";
        return 0;
    }
    pytivka data;
    char buffer[256];
    const char pattern[] = "Трус";
    while (phile.getline(buffer, 256))
    {
        char* token = strtok(buffer, ": @");
        strcpy(data.nazvaniekyrorta, token);
        token = strtok(NULL, ": @");
        data.cenapytivki = atoi(token);
        token = strtok(NULL, ": @");
        strcpy(data.nazvaniekyrorta, token);
        token = strtok(NULL, ": @");
        data.colvodnei = atoi(token);

        if (strncmp(data.nazvaniekyrorta, pattern, sizeof(pattern) - 1) == 0 && data.colvodnei > 18 )
        {
            cout << data.nazvanieoperatora << data.cenapytivki;
        }
    }
    phile.close();
}

Ответы (1 шт):

Автор решения: Павел Ериков
  1. Зачем вам массив int в структуре? Правильно он вам не нужен, а нужна просто переменная типа int

  2. strtok возвращает подстроку разделенную по переданному в неё разделителю. В вашем случае данные в файле хранятся таким образом:

    Название курорта:Цена Название туроператора@кол-во дней

    Чтобы получить название курорта, нужно разделить строку по :, чтобы получить цену по (пробел), для название туроператора по @ и кол-во дней не важно по какому разделителю.

    Поподробней про strtok можете почитать тут

  3. Там где нужно записать nazvanieoperatora вы записываете еще раз nazvaniekyrorta.

Вот измененная внутри цикла часть:

char* token = strtok(buffer, ":");
strcpy(data.nazvaniekyrorta, token);
token = strtok(NULL, " ");
data.cenapytivki = atoi(token);
token = strtok(NULL, "@");
//Записываете название оператора
strcpy(data.nazvanieoperatora, token);
token = strtok(NULL, "");
data.colvodnei = atoi(token);
→ Ссылка