#include <iostream>
using namespace std;
struct Word
{
int id;
char* letters;
};
struct InputWords
{
int nWords;
int maxWordSize;
Word* words;
};
void clearInput(InputWords in)
{
for (int i = 0; i < in.nWords; i++)
{
delete[] new Word[in.nWords];
}
delete[] in.words;
}
int main()
{
int maxLen = 0;
int currLen = 0;
int iOper = 0;
InputWords in;
int iCountWordSym = 0;
cout << "max word size: ";
cin >> in.maxWordSize;
cout << "count words: ";
cin >> in.nWords;
in.words = new Word[in.nWords];
for (int i = 0; i < in.nWords; i++)
{
in.words[i].letters = new char[in.maxWordSize];
cin >> in.words[i].letters;
}
for (int i = 0; i < in.nWords; i++)
{
cout << in.words[i].letters << endl;
}
clearInput(in);
}
Насколько понимаю
in.words[i].letters = new char[in.maxWordSize];
выделит память для слова размером in.maxWordSize и если ввести слово большей длины,
cin >> in.words[i].letters;
то должна возникнуть ошибка, но по факту её не возникает.
Пример:
max word size: 3
count words: 2
qwerty asdfghj
qwerty
asdfghj
Почему?