Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику 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 строк выдет ошибку.
Когда пишете на с++, то нужно писать на с++. А у Вас "майкрософт си". Используйте 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 строк, будет беда.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
IDE CLion может переходить в библиотеку #include <mariadb/mysqlh>, то есть, файл найден, однако проект не компилируется: /home/nerd/CLionProjects/ISPstats/main
Это мой код по сортировке фамилий, Входят фамилии, пробегаются по функции Алфавит, и потом им присваивается соответствующее значение в массиве