C 初始化数组
我需要创建一个30乘30的空数组,并使用double for循环填充点。我被困在如何写数组并用点填充它。我对编程非常陌生,这远不是正确的,但我所写的C 初始化数组,c,arrays,C,Arrays,我需要创建一个30乘30的空数组,并使用double for循环填充点。我被困在如何写数组并用点填充它。我对编程非常陌生,这远不是正确的,但我所写的 #include <stdio.h> int cols = 30; int rows = 30; int i; int j; int main() { char intial_map[30][30]; for(char i=0; i<=cols; ++i) { for(char j=0;j&
#include <stdio.h>
int cols = 30;
int rows = 30;
int i;
int j;
int main()
{
char intial_map[30][30];
for(char i=0; i<=cols; ++i)
{
for(char j=0;j<=rows; ++j)
{
intial_map[i][j] = .
scanf(“%d”, &intial_map[i][j]);
}
}
return 0;}
#包括
int cols=30;
int行=30;
int i;
int j;
int main()
{
字符初始_图[30][30];
对于(字符i=0;i将行initial_-map[i][j]=。
更改为initial_-map[i][j]='。
。此处未定义不带引号的点,而不是字符。有几件事:
您需要确保引用您的文字。在这种情况下,编译器将您的
视为结构运算符的成员。您需要将其括在单引号中(双引号用于字符串文字)通知编译器它是一个文本而不是运算符。此外,您需要用分号终止语句
除此之外,您的for
循环中还有一个off by one错误。如果您只想用点填充2D数组,则需要使用,然后不必使用scanf
函数,只需使用赋值运算符=
:
#include <stdio.h>
int main(void)
{
int cols = 30;
int rows = 30;
int i;
int j;
char intial_map[30][30];
for (i = 0; i < cols; i++)
{
for (j = 0; j < rows; j++)
{
intial_map[i][j] = '.';
putchar(initial_map[i][j]);
}
}
return 0;
}
#包括
内部主(空)
{
int cols=30;
int行=30;
int i;
int j;
字符初始_图[30][30];
对于(i=0;i
请注意,上面的代码不会NUL终止数组。char
文本必须在单引号中(并且您忘记了分号),因此您需要的是=';
,而不是=.
。也就是说,您正在通过下一行的scanf
替换值,因此我不知道为什么需要在那里放置
。此外,您几乎肯定需要%c
代码(%c
读取一个字符)时,使用了%d
格式代码。为什么要包括对scanf()的调用
在循环中,这与用点填充数组有什么关系?不要使用i
和j
作为全局变量。事实上,您可能也不希望cols
和行
作为全局变量,但单字母全局变量几乎总是一个坏主意(我不能马上想到可以减轻处罚的情况)。这非常有帮助,谢谢!但是,当我编译程序时,没有打印任何内容。我需要包含printf()吗语句?同样,我对这一点非常陌生,这是我用CYes编写的第一个程序之一,它只是初始化数组。要打印它,你必须循环每一行并打印每个元素。这非常有用,谢谢!但是,当我编译程序时,什么也不打印。我需要包含printf()吗语句?同样,我对这一点非常陌生,这是我用CY编写的第一个程序之一。您必须将NUL终止的字符串传递给printf,否则您将调用未定义的行为。要打印上述数组,请使用与上面类似的2个循环并调用putchar函数。@EvaHeller我编辑了代码,以便它将点打印到屏幕上。您支持bably希望在内部循环之后有一个putchar('\n');
。您还需要添加缺少的分号。这只会触及问题的表面。
char initial_map[30][30];
memset(initial_map, '.', sizeof(initial_map));
#include <stdio.h>
int main(void)
{
int cols = 30;
int rows = 30;
int i;
int j;
char intial_map[30][30];
for (i = 0; i < cols; i++)
{
for (j = 0; j < rows; j++)
{
intial_map[i][j] = '.';
putchar(initial_map[i][j]);
}
}
return 0;
}