C:2D-Array从一开始就不打印出来

时间:2013-12-11 03:13:30

标签: c arrays printf

我正在尝试打印出我的程序的2D数组,但是输出中途开始(在数据包18处,它不会打印出“数据包18:”。但之后它会将其余部分正确打印到最后发生了什么?因为我已经将计数器j初始化为0,我不明白为什么它从18开始而不显示文本。我做错了什么?

int i;
int j;
int s[7][50];
i = 0;

for (j = 0; j < 50; j++)
{
    printf("Packet %d:\n", j + 1);
    for (i = 0; i < 7; i++)
    {
        printf("Value of line %d: %d", i + 1, s[i][j]);
        printf("\n");
    }
    printf("\n");
}

3 个答案:

答案 0 :(得分:4)

如果你在控制台窗口中运行它,并依靠控制台窗口的回滚来查看程序的输出,那么最有可能发生的是程序的输出对于回滚历史来说太长了。

尝试将输出重定向到文件。如果您在Windows,Linux或MacOS X下的命令提示符下运行它,您可以这样做:

myprogram > file.txt

(如果您使用的是Linux或MacOS X,则可能需要说./myprogram > file.txt。)

如果你在文本编辑器中检查file.txt,我认为你会看到你的程序的完整输出。

答案 1 :(得分:2)

此代码包含一些初始化,并产生我期望的输出:

#include <stdio.h>

int main(void)
{
    int i;
    int j;
    int s[7][50];

    for (i = 0; i < 7; i++)
    {
        for (j = 0; j < 50; j++)
            s[i][j] = 100 * (i + 1) + j + 1;
    }

    for (j = 0; j < 50; j++)
    {
        printf("Packet %d:\n", j + 1);
        for (i = 0; i < 7; i++)
        {
            printf("Value of line %d: %d", i + 1, s[i][j]);
            printf("\n");
        }
        printf("\n");
    }

    return 0;
}

部分示例输出:

Packet 1:
Value of line 1: 101
Value of line 2: 201
Value of line 3: 301
Value of line 4: 401
Value of line 5: 501
Value of line 6: 601
Value of line 7: 701

Packet 2:
Value of line 1: 102
Value of line 2: 202
Value of line 3: 302
Value of line 4: 402
Value of line 5: 502
Value of line 6: 602
Value of line 7: 702

Packet 3:
Value of line 1: 103
Value of line 2: 203
Value of line 3: 303
Value of line 4: 403
Value of line 5: 503
Value of line 6: 603
Value of line 7: 703

Packet 4:
Value of line 1: 104
Value of line 2: 204
Value of line 3: 304
Value of line 4: 404
Value of line 5: 504
Value of line 6: 604
Value of line 7: 704

...

Packet 47:
Value of line 1: 147
Value of line 2: 247
Value of line 3: 347
Value of line 4: 447
Value of line 5: 547
Value of line 6: 647
Value of line 7: 747

Packet 48:
Value of line 1: 148
Value of line 2: 248
Value of line 3: 348
Value of line 4: 448
Value of line 5: 548
Value of line 6: 648
Value of line 7: 748

Packet 49:
Value of line 1: 149
Value of line 2: 249
Value of line 3: 349
Value of line 4: 449
Value of line 5: 549
Value of line 6: 649
Value of line 7: 749

Packet 50:
Value of line 1: 150
Value of line 2: 250
Value of line 3: 350
Value of line 4: 450
Value of line 5: 550
Value of line 6: 650
Value of line 7: 750

答案 2 :(得分:0)

每一件事情都是对的,唯一的问题就是错误地将你的for()循环置于错误的位置,或者你现在根据你的程序对2d阵列不太了解

     int s[7][50];

平均7行50列。完整的图片是七个一维阵列,每个阵列有五十个元素。现在要打印其数据,代码是

   1   int i,j;
   2   for(i=0;i<7;i++)       
   3    for(j=0;j<50;j++) 
   4      printf("s[%d][%d]=%d \n",i,j,s[i][j]);

第1行:声明两个局部变量 第2行:这里我们首先逐个迭代第0个数组及其50个元素         我们从第3行得到的。 第3行:现在,对于每个1d数组,我们使用第二个for循环来表示每个元素 第4行:printf函数很简单,也可以打印值及其位置。 如果你能看到这个图表,那就没关系了。