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,所以如何得到超过4个
printing part of code:
for(int i=0; i<count; i++)
{
cout<<i<<"="<<name[i]<<endl;
}
system("pause");
}
答案 0 :(得分:1)
您需要告诉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))
;
答案 1 :(得分:1)
如果我弄错了,你会问“为什么如果阵列是4我可以适合5?”。 与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));