C++ процесс завершает работу с кодом -1073741819
программа должна принимать текст (несколько строк) с клавиатуры, признак окончания – слово «and». Затем изменять текст: располагать строки по алфавиту, в конце каждой строки отражать её характеристики (длина строки, количество слов, строчных и прописных символов). Написал следующий код:
#include <iostream>
#include <iomanip>
#include <cstring>
#include <windows.h>
#define N 80
using namespace std;
int scount(char* p); // подсчёт слов в строке
void results(char* s, int k, int* arr); // характеристики строк
int main()
{
setlocale(LC_ALL, "ru");
char buff[N] = {"\0"}, ending[N] = {"and"};
char* din_str[N];
int k = 0;
// Ввод текста
cout << "Введите текст: " << endl;
while(strcmp(ending, buff))
{
gets_s(buff);
din_str[k] = (char*)malloc(strlen(buff) + 1);
strcpy(din_str[k], buff);
k += 1;
}
// Сортировка по алфавиту
for (int i = 0; i < k; i++)
for(int j = i + 1; j < k; j++)
if (strcmp(din_str[i], din_str[j]) > 0)
{
char* temp = din_str[i];
din_str[i] = din_str[j];
din_str[j] = temp;
}
// Фомируем массив результатов
int* arr = new int[4 * k];
for (int i = 0; i < k; i++)
results(din_str[i], i, arr);
// Вывод отсортированного текста c результатами
cout << "Отсортированный текст: " << endl;
for (int i = 0; i < k; i++)
{
cout << din_str[i] << endl;
for (int j = 0; j < 4; j++)
cout << setw(5) << *(arr + (4 * i) + j);
cout << endl;
}
for (int i = 0; i < k; i++)
{
delete[] arr;
}
delete[] din_str;
delete[] buff;
system("pause");
return 0;
}
int scount(char* p)
{
int word, count = 0, i = 0;
while (p[i] == ' ' && p[i] != '\0')
i++;
word = 0;
while (p[i] != '\0') {
if (p[i] != ' ' && word == 0)
{
word = 1;
count++;
}
else if (p[i] == ' ')
word = 0;
i++;
}
return count;
}
void results(char *s, int i, int* arr)
{
char* pstr;
int clower = 0, cupper = 0;
pstr = s;
for (; *pstr; pstr++)
{
if (islower(*pstr)) clower++;
else if (isupper(*pstr)) cupper++;
}
*(arr + 4 * i) = strlen(s);
*(arr + (4 * i) + 1) = scount(s);
*(arr + (4 * i) + 2) = clower;
*(arr + (4 * i) + 3) = cupper;
}
вот пример ввода данных и получения ошибки:
Просьба помочь, если не сложно, найти недочёты в коде, которые вызывают данную ошибку.