【发布时间】:2021-10-04 02:05:56
【问题描述】:
我写了一段 c 代码来创建一个二维数组,然后打印它。但是它没有打印出来,我可以看到每个循环似乎都在正确的时间运行。
我对 c 很陌生,所以这个答案可能真的很基本抱歉。
我的代码编译得很好(gcc),但没有返回我所期望的。我在 WSL 中使用 ubuntu 18.04 和 gcc 作为我的编译器。
这是我的代码:
#include <stdio.h>
int main(void) {
int i, k;
int array[2][3] = {0};
for (i = 0; i < 2; i++) {
printf("l1 ");
for (k = 0; k < 3; k++) {
scanf("%d", &array[i][k]);
printf("l2 ");
}
}
for (int i = 0; i < 3; ++i) {
printf("l3 ");
printf("%d ", array[k][i]);
if(i == 2) {
i = -1;
++k;
printf("\n");
}
if(k == 3) {
printf("yay");
return 0;
}
}
}
终端窗口如下所示:
l1 1
l2 2
l2 3
l2 l1 4
l2 5
l2 6
l2 l3 32602 yay
数字是我输入的元素,除了最后一个似乎作为输出出现的元素,但它与我期望的完全不同。
我希望它打印我所有的数组元素,但我不明白为什么它不打印,因为我在 gcc 中没有收到错误,所以我的语法看起来不错。
谢谢。
【问题讨论】:
-
"所以我的语法看起来不错。"语法错误只是最简单的错误。您的编译器甚至会告诉您有关它们的信息。所有其他错误都更难找到。
-
一般提示:对于这样的小程序,第一步是在调试器中运行它,并在观察所涉及的变量的同时逐步执行您的指令。这应该会立即向您显示您在第二个循环中的位置以及
k的值。 -
我喜欢这种方法,但我认为它使任务过于复杂,首先正如@Gerhardh 指出的那样,您在第二个循环结束后立即重用
k,您应该再考虑一下想想k的价值可能是多少。我会尝试使用最直观的解决方案来解决问题,这样我就不必处理这些细微差别! -
@Newbie 你不需要告诉我们没有语法错误,因为如果有语法错误你会告诉我们编译器的错误日志,不是吗?
-
@Newbie 学习的好机会,肯定有很多教程
标签: arrays c gcc ubuntu-18.04 windows-subsystem-for-linux