2

一晩中、私はこれに対する答えを探していましたが、まだ寝ていませんが、まだ機能させることができません...バイナリファイルがあり、それを読み込んで各整数の値を取得したい...ここいくつかのコードです:

FILE *f;
char ch;
char t1[3];
int l, c, grayScale, i, j;
int p =0;


f = fopen(pgm, "rb");

(...)

c = 0;
l = 0;


fscanf(f, "%d", &c);

fscanf(f, "%d", &l);

fscanf(f, "%d", &grayScale);


A = alocar_memoria_matriz(l,c);

for(i = 0; i<l; i++){
    for(j=0; j<c; j++){
        if(fread(&p,sizeof(int),1,f) !=1){
             fprintf(stderr, "\nError!\n");
             fclose(f);
             free_memoria_matriz(A,l);
             return NULL;
        }else if(p>grayScale|| p<0){
            fprintf(stderr, "\nError!\n");
            fclose(f);
            free_memoria_matriz(A,l);
            return NULL;
        }else{
        A[i][j] = (tdf_elemento) p;

    }
}
}

その p の一部printfを (%d と %i を使用して) 実行したところ、-1161602550、1213357911、994462027 のような値が得られました...何が起こっているのか本当にわかりません。p を char[5] に変更しようとしましたが、これまでのところうまくいきませんでした... よろしくお願いします...

4

1 に答える 1