- 締切済み
画像の処理について
『ppm形式の画像の読み込み』のプログラムを実行したのですが、 エラーがでてうまくいきません。 どこを修正しなければいけないのか、教えてください。 エラーの内容↓ function 'main': main.c:17: 警告: passing argument 1 of 'fopen' makes pointer from integer without a cast main.c: In function 'headerScan': main.c:35: 警告: ポインタと整数との比較を行なっています main.c:36: 警告: ポインタと整数との比較を行なっています main.c:37: 警告: ポインタと整数との比較を行なっています main.c: In function 'dataScan': main.c:44: 警告: ポインタと整数との比較を行なっています プログラム↓ #include <stdio.h> #include <stdlib.h> struct image{ int type; int width; int height; int depth; char *data; }; int main(int argc, char *argv){ FILE *fpin; fpin = fopen("argv[1]", "rb"); struct image *img; headerScan(fpin, img); img->data = (char *)malloc(sizeof(char)*img->width*img->height*3); dataScan(fpin, img); free(img->data); fclose(fpin); return 0; } int headerScan(FILE *fp, struct image *img){ while(fscanf(fp, "P%d", &(img->type)) == NULL) ; while(fscanf(fp, "%d %d", &(img->width), &(img->height)) == NULL) ; while(fscanf(fp, "%d", &(img->depth)) == NULL) ; return 0; } int dataScan(FILE *fp, struct image *img){ int i = 0; while(fscanf(fp, "%c%c%c", &(img->data[i++]), &(img->data[i++]), &(img->data[i++])) != NULL) ; return 0; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- arain
- ベストアンサー率27% (292/1049)
>『ppm形式の画像の読み込み』のプログラムを実行したのですが、 >エラーがでてうまくいきません。 「実行」までいってない。 >どこを修正しなければいけないのか、教えてください。 エラーの内容のとおりだけど? まず、関数のリファレンスを読み直すことと、エラーの意味を理解することから始めるべき。 >main.c:17: 警告: passing argument 1 of 'fopen' makes pointer from integer without a cast fopen()の使い方が問題。 関数に渡す引数の内容が違う。 >main.c:35: 警告: ポインタと整数との比較を行なっています >main.c:36: 警告: ポインタと整数との比較を行なっています >main.c:37: 警告: ポインタと整数との比較を行なっています >main.c:44: 警告: ポインタと整数との比較を行なっています fscanf()の戻り値はint型。戻る値は項目数(0もありえる)かEOF。 NULL比較はできない。 >main.c: In function 'dataScan': プロトタイプ宣言されていないから、main()より下に書かれている関数が認識されていない。