• ベストアンサー

pgmファイルをC言語で読込、処理、出力する方法

題名の通りのプログラムを作成しています。 http://www.mm2d.net/c/c-07.shtml http://www.mm2d.net/c/c-09.shtml http://www.mm2d.net/c/c-10.shtml を参考に、コンパイルが通るプログラムは作りました。 あとは何らかの画像処理を行い、printfをどこかに埋め込んだら完成だと思うのですが、 画像処理とprintfを行う(埋め込む)場所が分かりません。 教えてください。 環境はwindowsです。UNIXじゃないのでバイナリモード(r→rb、w→wb)にしなければいけないかもです。

質問者が選んだベストアンサー

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

前の質問で元の内容に対しての内容から話が広がっていくのでわざと静観していましたが 再度別質問立てたようなので改めて反応 >コンパイルが通るプログラムは作りました。 作ってないよね あなたは書いてあるものをコピーしただけ ざっと見ただけですがそこのHP記載のコードで既に読込・出力処理は実装されています 動かないのはあなたがその関数を使って無いからです 実際扱うファイル名の入出力(指定)処理は あなたが別途処理を書いたうえで コピーした関数軍に適切なパラメータを受け渡してやる必要があります 実際行いたい処理はあなた自身が作成する必要があります 質問と行動見てると正直  あなたのレベルがそのレベルに達していない感  がします もっと基本的な勉強をすることをお勧めします

pgmbgn
質問者

補足

大体の方針は合ってたようで良かったです。 話が広がっていったのは、基礎的なことが分かってない上に、基礎を勉強する時間がないからです。 レベルに達してないのは自覚していますが、学校の課題であり、時間もないので。文句は学校に言ってください。 色々な指摘がありましたが、参考にすべきものは参考にします。回答ありがとうございました。

関連するQ&A

  • C言語でpgm形式の画像を読み込みたい

    タイトル通りです。読み込むプログラムが書けません。 この手の質問に対し、 http://www.mm2d.net/c/c-09.shtml  を参考にする、という回答がよく見受けられますが、Picture*というふうに*が後付けされてる部分がエラーが出ます。 ヘッダ処理もして、データも読み込めるプログラムを教えていただけないでしょうか。

  • IrfanviewにおけるPGMファイル出力について

    Irfanviewでjpeg画像をグレースケール化し、PGMファイルで出力しました。出力方法はバイナリではなく、アスキーにしました。すると、1行あたり16個の整数がずうっと下のほうまで続いているのですが、ところどころ、改行コードが抜け落ちたのか、32個の整数が並ぶ行が発生します。これは何か意味があるのでしょうか?それとも単なる処理落ちなのでしょうか?もし処理落ちなのだとしたら、ちゃんと全ての行が16個ずつの値になるようにできないでしょうか?あとでプログラム処理するときに不便です。

  • C言語での式の評価順序について

    ANSI C規格では 「式の評価順序は処理系により異なる」 とのことですが,次のプログラムがどのような評価順序で処理されたのか,どうしても分かりません. C言語の細かいところまでご存知の方がいらっしゃいましたら教えてください. #include <stdio.h> main(){ int c; c = 0; printf("%d\n", c + 1 == ++c); c = 0; printf("%d\n", c + 0 == ++c); } 私の処理系のccでコンパイルして実行すると 1 1 と出力されます. 上の二つの条件式が両方とも真であると解釈され得るような評価順序が存在するのでしょうか?

  • C言語のコンパイル後のエラ-

    UNIX windows98でC言語をプログラムしました。 #include<stdio.h> void main() { int val; val=5; printf("今、変数の中身は、 %dです¥n”, val); val=val+1; printf(”今、変数の中身は、 %dです¥n", val);  val=val++; printf("今、変数の中身は、 %dです¥n”,  val); } をファイル名 aaaとして gcc aaa.c でコンパイルしたところ、 aaa.c: In function 'main': aaa.c:5:warning: return type of 'main' is not 'int' とエラ-が現れます。 return(o);を最後に追加するのでしょうか。もし、そうならば、どこに追加する のか、教えてください。   

  • C言語での画像処理:jpeg→pgmへ

    Linux(Fedora core 4)を使っております。 今回C言語で画像処理を行いたいと考え、画像の形式がpgm形式としてのプログラムを組みました。 このプログラムを、実際にデジカメでとった写真について使いたいのですが、デジカメで撮った写真はjpeg形式の為、これをpgm形式に変換したいのですが、これはプログラムを作って行うことはできるのでしょうか。もしくはツールが必要なのでしょうか。ちなみに当方プログラミング初心者でございます。 よろしくお願い致します。

  • objective-cで、バイナリの読み込みに関して。

    objective-cで、バイナリの読み込みに関して。 バイナリファイルが容易してあり。 例えば Cで下のようなソースで読み込みできるとします。 typedef struct tagTTestStruct { int data1; int data2; char data3; } TTestStruct; int main() { TTestStruct testdata; FILE *fp; fp = fopen( FILENAME , "rb" ); fread( &testdata , sizeof( testdata ) , 1 , fp ); fclose( fp ); printf( "data1 = %d , data2 = %d , data3 = %d\n" ,testdata.data1,testdata.data2,testdata.data3 ); return 0; } これを、objective-cらしく書くにはどうしたらいいのでしょうか、、、 nsdataやnsarchiverを調べてみたのですが、よくわからないんです。 また、参考になるようなサイトがあればおしえてほしいです。

  • C言語で質問します

    Sorting Three Numbers 3つの整数を読み込み、それらを値が小さい順に並べて出力するプログラムを作成して下さい。 Input 3つの整数が空白で区切られて与えられます。 Output 小さい順に並べ替えた3つの整数を1行に出力して下さい。整数の間に1つの空白を入れて下さい。 Sample Input 3 8 1 Sample Output 1 3 8 以上がAIZU ONLINE JUDGEというサイトの問題です。 自分が書いたソースプログラムは以下です: #include<stdio.h> int main(void){ int a,b,c; scanf("%d %d %d",&a,&b,&c); if(c>b&&b>a){ printf("%d %d %d",a,b,c); } if(b>c&&c>a){ printf("%d %d %d",a,c,b); } if(a>c&&c>b){ printf("%d %d %d",b,c,a); } if(c>a&&a>b){ printf("%d %d %d",b,a,c); } if(b>a&&a>c){ printf("%d %d %d",c,a,b); } if(a>b&&b>c){ printf("%d %d %d",c,b,a); } if(a==b&&b==c){ printf("%d %d %d",a,a,a); } if(a==b&&b>c){ printf("%d %d %d",c,a,a); } if(a==b&&c>b){ printf("%d %d %d",a,a,c); } if(a>c&&b==c){ printf("%d %d %d",b,b,a); } if(c>a&&b==c){ printf("%d %d %d",a,b,b); } return(0); } 自分のパソコン上でコンパイルして,いろいろ整数を入力してみて,全部大丈夫でしたが,なぜこのオンラインサイトでコンパイルするとエラーが出るでしょうか? よろしくお願いします

  • C言語 ファイルの出力

    こんにちは。 現在C言語学習中でファイルの出力でエラーが発生したのですが、どのようにエラーを起こしているのかわかりません。 ご指摘をお願いします。 #include<stdio.h> int main(void) { FILE *fp = NULL; fp = fopen("test1.txt", "w"); if(fp == NULL){ printf("ファイルをオープンでいませんでした。\n"); return -1; } else{ printf("ファイルをオープンしました。\n"); } fputs("Hello!\n", fp); fputs("Hello World!\n", fp); printf("ファイルに書き込みました。\n"); fclose(fp); printf("ファイルをクローズしました。\n"); int i; scanf("%d", &i); return 0; } エラーの内容は 1>LINK : fatal error LNK1104: ファイル 'C:\Users\拓哉\Documents\Visual Studio 2010\Projects\sample.c\Debug\sample.c.exe' を開くことができません です。現在使用中のC言語環境は上記の通り、Visual Studio 2010です。 学習仕立てで、あまりプログラミングについて知りません。 よろしければ、他に何か間違いがあればご指摘お願いします。

  • 【C言語】ファイルを読み込んで16進数で表示する

    ファイルをバイナリモードで読み込んで16進数で表示するプログラムについて質問です。 以下の処理内容が理解できません。どのような処理を行っているのでしょうか?? (xdump.c)********************************* #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { int i, j; FILE *fp; if(NULL == (fp = fopen(argv[1], "rb"))) { fprintf(stderr, "Cannot open FILE[%s].\n", argv[1]); exit(1); } for(i=0; i<0x7FFF; ++i) { printf("%08X :", ftell(fp)); for(j=0; j<16; ++j) { int c; c = 0x00FF & getc(fp); if(ferror(fp)) { puts("\a>>>> Read Error ! <<<<"); break; } if(feof(fp)) break; /* 16進数で表示 */ printf(" %2X", c); } printf(" : %08X\n", ftell(fp)-1); /* : */ /* : */ /* 以下省略 */ ****************************************** 上記に関して、 最初のfor文から"c = 0x00FF & getc(fp);"までの処理内容が よくわかりません。どなたかご教授願えますでしょうか?

  • C言語のプログラミングで困っています

    C言語を勉強しています。まだまだ初心者で分からないことだらけなのですが、今回はファイル入出力の部分が分からず苦戦しています。 『100個の実数が入った2つのテキストファイルから数値を読み込み、  絶対値を求めるなどの計算をする』プログラムを作成しているのですが、 コンパイルし実行すると強制終了してしまいます。 プログラムは、 void main(void) { FILE *fp; double c[50000];   double d[50000];   double e[50000]; int n = 0;   int m = 0;   int i = 0;   char fname[80];   char fname2[80]; printf("ファイル名 : ");    gets(fname); if((fp = fopen(fname, "r")) == NULL){ printf("ファイルがオープンできません\n"); exit(1); } printf("\n"); while (fscanf(fp,"%lf",&c[i])!=EOF){ printf("%3d : %3lf",++n,c[i]); printf("\n"); i++; } printf("\n"); i=0; n=0; printf("ファイル名 : ");    gets(fname2); if((fp = fopen(fname2, "r")) == NULL){ printf("ファイルがオープンできません\n"); exit(1); } printf("\n"); while (fscanf(fp,"%lf",&d[i])!=EOF){ printf("%3d : %3lf",++n,d[i]); printf("\n"); i++; } …(以下計算) のようになっています。 整数のデータで計算を行うと、正常に動くのですが…。 コンパイルしてもエラーが出ないので、どこが悪いのかわからず困っています。 どなたか教えていただけないでしょうか。お願いしますm(_ _)m