【发布时间】:2020-03-11 19:29:43
【问题描述】:
我只是 C 语言的初学者。
我想确定数组的元素,但它失败了。 我想插入索引(行=x,列=y)。这可能吗?
这是我的代码。
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main(void)
{
int x, y;
char coords[3][3] = { NULL };
printf("x, y: ");
scanf("%d %d", &x, &y);
coords[x][y] = 'O';
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
printf("%c ", coords[i][j]);
printf("\n");
}
return 0;
}
如果 x=2, y=2,我希望结果会被打印出来
␠␠␠
␠␠␠
␠␠O
(其中␠是空格)
我认为coords[x][y] = 'O'; 是问题所在,但我无法解决。
【问题讨论】:
-
为什么你认为应该打印“\n”?你
printf("\\n")在哪里吗?代码现在打印的是什么?你的初始化有点奇怪,NULL是一个指针的值。要将数组元素初始化为0,请执行= { { 0 } };。 “未显式初始化”的数组元素将自动初始化为 0。 -
NULLinchar coords[3][3] = { NULL };没有意义。在我的编译器上,它最终用 NUL(字符零)填充数组。绝对没有理由相信它会像您期望的那样用空格填充它! -
重新编辑,如果您只想要一个,为什么要为每个数组元素打印两个字符 (
"%c ")... -
除非您检查返回,否则您无法正确使用
scanf。例如。if (scanf("%d %d", &x, &y) != 2) { fputs ("error: invalid integer input.\n", stderr; return 1; }和 启用编译器警告 - 对于 VS,将/W3添加到您的编译器选项中,并且在编译没有警告之前不要接受代码。