[英]array getting more than it should
char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(cin.getline(name[count++],20))
;
--count;
(其余的代碼用於打印,如果您也需要在末尾看到的話)
當我輸入的名稱超過4個時,它仍會打印這些名稱,但是怎么辦? 因為第一個維度是4,所以它怎么能超過四個
printing part of code:
for(int i=0; i<count; i++)
{
cout<<i<<"="<<name[i]<<endl;
}
system("pause");
}
您需要告訴while()
循環何時停止。
嘗試這個:
char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(count < 4 && cin.getline(name[count++],20))
;
如果我沒弄錯,您會問“為什么數組是否為4我可以容納5?”。
與Pascal不同,Pascal在運行時檢查數組邊界,而C ++則不會這樣做。
想一想。 數組只是一些指針,稍后會添加偏移量。
假設您有一個由5個整數組成的數組,然后執行此操作
int a[5];
a[3] = 3;
a[6] = 4;
沒什么錯,因為在第一個賦值中,該語句等於a+12
,第二個等於a+24
。 您只是在增加指針,除非您不打擾操作系統,否則您可能會繼續並可能覆蓋其他一些數據。
因此,如果您跨越數組邊界,C ++幾乎不會說什么。 這意味着您必須始終以某種方式知道該數組的大小,只需添加到循環中即可:
while(count < 4 && cin.getline(name[count++], 20));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.