Проблема с функцие strcut_s(); [закрыт]

101
15 ноября 2020, 10:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос
    char mass[2][1000];
    char mass2[6][1000];
    int r = 0;
    int s = 0;
    ifstream fs("file1.txt");
    if (!fs.is_open()) { cout << "Файл не открыт!\n"; return 0; }
    while (!fs.eof())
    {
        fs.getline(mass[r], 1000); 
        cout << mass[r] << endl;
        r++;
    }
    fs.close();
    ifstream fs2("file2.txt");
    if (!fs2.is_open()) { cout << "Файл не открыт!\n"; return 0; }
    int p = 0;
    while (!fs2.eof())
    {
        fs2.getline(mass2[p], 1000);
        s++;
        cout << mass2[p] << endl;
        p++;
    }
    fs.close();
    int k = s;
    r = 0;
for (r=0;r<k;r++)
    {
        strcat_s(mass2[r],mass[r]);
        cout << mass2[r];
    };

В первом массиве 6 строк в другом 2 нужно прсоеденить к строкам 1 соответсвущие из 2. Но когда использую функцию strcat из за разного размера после добавления 2 строк выдет ошибку.

Answer 1

Когда пишете на с++, то нужно писать на с++. А у Вас "майкрософт си". Используйте std::string и все станет сильно проще.

Теперь к ошибке. Почему то студия не отслеживает подобные ошибки. Но посмотрите на сигнатуру функции strcat_s

errno_t strcat_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource
);

Там три аргумента, а у Вас только два... И строка

strcat_s(mass2[r],mass[r]);

должна выглядеть как минимум так

strcat_s(mass2[r],1000, mass[r]);

И что бы два раза не отвечать, паттерн

while (!fs.eof())
    {
    ...
}

плохой. Он будет читать лишнюю, несуществующую строку в конце файла. Лучше писать так

while (fs.getline(mass[r], 1000))
{
    cout << mass[r] << endl;
    r++;
}

вот только если в файле будет больше 2 строк, будет беда.

READ ALSO
Подключить MariaDB на С++

Подключить MariaDB на С++

IDE CLion может переходить в библиотеку #include <mariadb/mysqlh>, то есть, файл найден, однако проект не компилируется: /home/nerd/CLionProjects/ISPstats/main

113
Сортировка списка фамилий

Сортировка списка фамилий

Это мой код по сортировке фамилий, Входят фамилии, пробегаются по функции Алфавит, и потом им присваивается соответствующее значение в массиве

106