2013-12-11 91 views
1

我試圖打印出我的程序的二維數組,但輸出開始中途(在數據包18,它不打印出「數據包18: 「但在此之後,它會將其餘部分正確地打印到最後,這是怎麼回事?因爲我已經將計數器j初始化爲0,我不明白爲什麼它會以18開始並且不顯示文本。錯了嗎?C:二維數組無法從開始打印

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"); 
} 
+0

顯示's'的聲明。 – chux

+0

你能發佈更完整的東西嗎?包括s的聲明也會有幫助。 – razeh

+0

哦對不起。添加它。 – user3004619

回答

4

如果您運行這個在控制檯窗口,並依託控制檯窗口的屏幕滾動查看程序的輸出,什麼是最有可能發生的是,該程序的輸出是回溯歷史太長。

嘗試將輸出重定向到文件。如果你正在運行在這個在Windows,Linux或MacOS X的命令提示符下,你可以做到這一點大概像這樣:

myprogram > file.txt 

(如果你在Linux或MacOS X的,你可能需要說./myprogram > file.txt

如果您在文本編輯器中檢查file.txt,我想您會看到程序的完整輸出。

+0

這是否和輸出文件中的輸出保存正確。 – user3004619

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 
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行:在這裏我們首先迭代零陣列和第五十元件由一個 其中之一,我們從3行得到:兩個局部變量 第2行的聲明。 第3行:現在對於每個1d數組我們通過使用第二個for循環 它的每個元素第4行:只是簡單的printf函數來打印值和它的位置。 如果你能看到這個圖,那麼它是可以的。

+0

我刪除了你的照片。它很模糊,很難理解。 – haccks

+0

我試圖讓其中一個變得可見,但如果你想要這個圖像,我是無法管理的,那麼我會嘗試用不同的方式表示同樣的東西。 – asifaftab87