C 初始化数组

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&

我需要创建一个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<=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
,而不是
=.
。也就是说,您正在通过下一行的
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;
}