2013-12-11 70 views
0

我正在閱讀PPM文件,並且我已經在整個函數中使用printf來查看它是否會打印,但由於某種原因它打印了p3/comment/width/height/maxcolor,但它不會打印像素...我試圖通過使用printf語句檢查內嵌和外嵌循環,但它不會讀取數據...任何想法?不會在我的圖像中讀取

void ReadImages(struct ImageType *imgur, struct ImageType *imgur2) 
    { 
    int i=0, j=0; 
    char filename[30]; 
    char filename2[30]; 

    FILE *inputfile; 
    fprintf(stdout, "Please enter the filename/location of the first image\n"); 
    fscanf(stdin, "%s", filename); 
    inputfile = fopen(filename, "r"); 

    fscanf(inputfile,"%[^\n]%c", imgur->ppImage, &imgur->newlinechar); 
    fscanf(inputfile,"%[^\n]%c", imgur->comment, &imgur->newlinechar); 
    fscanf(inputfile, "%i %i", &imgur->width, &imgur-height); 
    fscanf(inputfile, "%i", &imgur->maxColor); 

    for(i=imgur->height-1; i >= 0; i--) 
     { 
      for(j=0; j > imgur->width; j++) 
       { 
       fscanf(inputfile, "%i", &imgur->image[i][j].red); 
       fscanf(inputfile,"%i", &imgur->image[i][j].green); 
       fscanf(inputfile,"%i", &imgur->image[i][j].blue); 
       } 
     } 

是的,我確信,我的結構類型爲int紅/綠/藍,我已經打印出的意見/ maxcolor /和其他一切工作的所有檢查。

+0

'for(j = 0; j> imgur-> width; j ++)' - 該條件錯誤。 'j'永遠不會大於圖像寬度。 –

+0

@EdS。這就是它.....我應該抓住那..我知道這是我的循環,但我認爲我正在閱讀的寬度比j小,當我正在做完全相反......謝謝。 –

回答

0

您是否爲圖像分配了存儲空間imgur->image?如果沒有,那麼你的程序在那個時候崩潰了。

此外,您確實知道在您的for循環中沒有打印語句來讀取像素,因此也可能是它不打印像素的原因。

編輯:啊哈,這是有可能的:

 for(j=0; j > imgur->width; j++) 

你比較落後。您想要:

 for(j=0; j < imgur->width; j++) 
+0

我刪除它,我有一個函數打印後,這是一個函數來讀取兩個文件,然後一個函數來翻轉其中一個文件,然後一個函數來混合他們和一個最終的功能來輸出它們。我評論說出來,並使用printfs來查看我的像素數據丟失的位置。我確實有一個printf,但它沒有打印出一些奇怪的原因 –

+0

另外我有兩個結構,一個是分配存儲的像素圖像[450] [450]。 –

+0

@ user3078582:參見我在'j'循環中關於循環條件的編輯。 –