2013-12-11 2 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? Если нет, тогда ваша программа рушится в этот момент.

Кроме того, вы понимаете, что в вашем цикле нет сообщений о печати, которые читают пиксели, поэтому также может быть причиной того, что они не распечатывают пиксели.

Edit: Ага, это, скорее всего, это:

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

Ваше сравнение назад. Вы хотите:

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

Я удалил его, у меня есть функция taht prints later, это функция для чтения в двух файлах, затем функция для перевода одного из файлов, затем функция для их смешивания и конечная функция для их вывода. Я прокомментировал out put и использовал printfs, чтобы увидеть, где мои данные для пикселей были потеряны. У меня был файл printf, но он не печатался по какой-то нечетной причине. –

+0

Также у меня есть две структуры, одна из которых представляет собой пиксельное изображение [450] [450], которому выделено хранилище. –

+0

@ user3078582: Посмотрите мои изменения относительно вашего условия цикла в цикле 'j'. –

Смежные вопросы