В приведенном ниже коде, когда я запускаю его, и если я ввел более 30 символов во время выполнения, он не будет читать linesNum1
, а не text[]
.Как обрабатывать лишние символы, читаемые из cin?
Поэтому я думаю, что он хранит дополнительный символ от array1[30]
и использует его в linesNum1
.
Так как я могу очистить кэш программы, или сделать его cin
в linesNum1
и text[]
даже если я вошел больше символов, чем array1
может держать?
char array1[30];
for (int i = 0; i<30; i++)
cin >> array1[i];
int linesNum1;
cin >> linesNum1;
int linesNum2 = linesNum1*80;
char text[linesNum2];
for (int i = 0; i < linesNum2; i++)
cin >> text[i];
for (int i = 0; i < linesNum2; i++)
cout << text[i];
Вы задали совершенно хороший вопрос, маловероятно, что люди будут вас подчинять. – IanPudney
В ответе на этот вопрос есть несколько советов об исключении переполнения входного буфера: http://stackoverflow.com/questions/4895216/testing-buffer-overrun-of-input –