我无法理解以下代码,
static char s[N][N];
int i = 0;
while( gets(s[i]) )
{ some loop, where i gets incremented }
考虑到数组是N维,那么当
时会发生什么gets(s)
被称为?它如何将整个字符串存储在s [i]元素中?感觉s [i]应该等于输入的第一个字符,而不是整个字符串。当它以更多输入循环时会发生什么?重点是将其存储为
[char, char, char, char]
[char, char, char, char, char]
[char, char, char, char, char, char]
... and so forth
似乎代码正在进行中。但我不明白怎么做。
编辑#1
很多人建议不要使用gets(),但是为什么在没有非法输入的情况下gets()不适合我想将字符存储为数组中的元素而不是字符串?
答案 0 :(得分:2)
s[i]
元素是一个字符数组,因为s
是一个数组数组。可以使用一个字符数组来存储字符串,使用零字符(称为" nul")来标记结尾。
答案 1 :(得分:0)
示例:
int multi_array[2][2] = {{2,3,4},
{7,8,9},
{1,5,0}};
Array[n][m]
获取
第一个职位Array[0][0]
第二个职位Array[0][1]
位置0,1是3
第1,2位是9
位置2,2,为0
答案 2 :(得分:0)
上面的代码是存储字符串但带有编号的索引。 但是将该数字索引存储在数组的第一维中。
以这种方式考虑它,我想存储10个最大大小为256个字符串的字符串:
int main()
{
char s[10][256];
for (int i = 0; i < 10; i++ ) {
gets(s[i]);
}
for (int i = 0; i < 10; i++ ) {
cout << s[i] << endl;
}
}
cout << s[1][2] << endl;
注意:对于上面代码中的最后一行,它将输出第二个条目(我们从0-9开始命令所有内容)和该条目中字符串的第三个字符。 因此,如果我的条目是test2,则输出将是&#39;。
注意:调用gets(s)是不正确的,因为它不会编译,而不是代码的意图。
gets()调用有一些功能,如果不监视输入,可能会导致缓冲区溢出问题。