在下面的代碼中,當我運行它時,如果我在運行時輸入了超過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 –