Почему мой код не печатает массив после a для l oop? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть проект, в котором мы должны прочитать двоичный файл, который содержит пиксели изображения и вывести компоненты RGB, чтобы иметь компоненты между 0 и 255. Так что я сделал это, только моя программа ничего не печатает, Я не знаю почему (здесь я просто пытаюсь напечатать первое значение Pixgreen, которое является массивом, содержащим красный компонент каждого пикселя).

int main(void) {

    FILE *f_in = fopen("Pixmap.bin", "rb"); // ”rb" ouverture en lecture, binaire
    if(f_in == NULL ) {
        perror("Erreur lors de l'ouverture en lecture\n");
        return -1;
    }


    unsigned int myH;
    size_t r2 = fread(&myH, sizeof(myH), 1, f_in);
    printf("Hauteur: %d \n", myH);

    unsigned int myW;
    size_t r3 = fread(&myW, sizeof(myW), 1, f_in);
    printf("Largeur: %d \n", myW);


    int *Pix=malloc(myH*myW*sizeof(int));
    for (int i = 0; i < myW*myH; ++i) {
        size_t r4= fread(&Pix[i], sizeof(Pix), 1, f_in);
        //printf("0x%08X,", Pix[i]);
        //printf("%d,", Pix[i]);
    }
    free(Pix);


    fclose(f_in);

    int Pixred[myW*myH];
    int Pixgreen[myW*myH];
    int Pixblue[myW*myH];

    for (int q=0; q<myH; q++) {
        for (int s=0; s<myW; s++) {
            //Pixred[myW*q+s]=(Pix[myW*q+s]&0xFF0000)>>16;
            //Pixgreen[myW*q+s]=(Pix[myW*q+s]&0x00FF00)>>8;
            //Pixblue[myW*q+s]=(Pix[myW*q+s]&0x0000FF)>>0;
            Pixred[myW*q+s]=(Pix[myW*q+s] >> 16) & 0xff;
            Pixgreen[myW*q+s]=(Pix[myW*q+s] >> 8) & 0xff;
            Pixblue[myW*q+s]=Pix[myW*q+s] & 0xff;
        }
    }

    printf("%d,\n",Pixred[1]);
    fflush(stdout);

} // was missing...
...