所以我一直在努力理解一种算法,我在互联网上找到了它的 C++ 代码,但问题是我知道 Java,但对 C++ 真的不熟悉,所以我在理解它时遇到了一些麻烦。这部分特别是:
int m, i, j, len;
char temp[50];
char stuff[100][100];
while(scanf("%d",&m)!=EOF)
{
while(m--)
{
scanf("%s",temp);
len = strlen(temp);
for(i=0;i<=len;i++)
for(j=0;j<=len;j++)
memset(stuff[i][j],0,sizeof(char)*4);
}
}
好的,这就是我对我不明白的部分的想法。如果有人能告诉我我是否走在正确的轨道上,我将非常感激。
while(scanf("%d",&m)!=EOF)
对于这一部分,由于没有输入文件或类似的东西,并且 m 尚未初始化。我认为这意味着它将接受用户输入的整数或双精度数,直到在控制台中给出 EOF 字符。该输入将保存为 m。我只是对while循环感到困惑。有什么正在进行吗?m 只是一个整数,所以我不太明白。
while(m--)
相当于 for(i = m; i>=0; i--) ?
scanf("%s",temp);
len = strlen(temp);
for(i=0;i<=len;i++)
for(j=0;j<=len;j++)
memset(stuff[i][j],0,sizeof(char)*4);
因此,如果 m 正在递减,它希望以字符串的形式从控制台获取用户输入,但实际上是一个字符,并将每个字符保存在 temp[] 的下一个索引中?len 是该数组中实际已初始化的字符数?这是否意味着 len == m?然后 memset 只是将每个 3 维数组的 4 个索引设置为空?
我在这里期望的是用户输入要保存在 temp 中的 n 个字符序列,然后根据序列中有多少个字符准备一个 3d 数组的 stuff[n][n][4] 全部用零填充. 只是 while 语句对于仅接受基本上是字符串的内容似乎有点过分。
任何帮助都会很棒。我以前从未用 C++ 做过任何事情,除了最后一部分之外,我已经弄清楚了。对不起,这太长了,但我试图表明我一直在想什么。