C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 任意のPGMファイルからヘッダファイルを読み出力する


(過去ログ 100 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■60032 / inTopicNo.1)  任意のPGMファイルからヘッダファイルを読み出力する
  
□投稿者/ S.S (1回)-(2011/06/16(Thu) 00:28:04)

分類:[.NET 全般] 

初めまして、以下のプログラムを友人に教わりながら作ったのですが、何をやっていたのかいまいちわかっていません(^^;)。なので注釈も変だと思いますが・・。このプログラムを見ていったいなにをやっているのかわかりやすく説明していただけるとうれしいです。baron.pgmは画像でした。


/*
任意のpgmファイルからヘッダファイルを読み込み、その情報を出力するプログ
ラムを作成する。
使用するpgmファイルについては適当にirfanviewを使用して作成する。
*/

#include <stdio.h>/*ライブラリ関数であるprintfやputsなどの関数原型宣言は<stdio.h>の中で宣言されている。*/

int main(void)/*main関数を宣言する*/
{
FILE *pgm;/*pgmファイルを用意する*/
FILE *txt;/*txtファイルを用意する*/

int shikibetu;/*shikibetu関数を用意する*/
int x ;/*x 関数を用意する*/
int y ;/*y 関数を用意する*/
int kido;/*kido関数を用意する*/
char moji[256];/*charは0〜255文字を扱う*/

pgm = fopen("baron.pgm","rb");/*pgmファイルはbaron.pgmを読み込みで開く*/
if(pgm == NULL){ /*もしpgmファイル開けないなら*/
printf("\aファイルをオープンできません\n");/*pgmファイルを開けない時警報が鳴りファイルを開けない*/
return -1;/*正しくなかった(失敗を返す)*/
}

txt = fopen("txt04.txt","wb");/*txtファイルはtxt04を書き込みで開く*/
if(txt == NULL){/*もしtxtが開けないなら*/
printf("\aファイルをオープンできません\n");/*txtファイルを開けない時警報が鳴りファイルを開けない*/
return -1;/*正しくなかった(失敗を返す)*/
}

fgets(moji,255,pgm);/*pgmファイルから255文字mojiに配列を入れる*/

if(moji[0]!='P'){/*もし初めのmojiがPでなかったら*/
return NULL;/*正しくなかった(失敗を返す)*/
}
sscanf(moji,"P%d",&shikibetu);/*mojiからP%dをshikibetuに入れる*/
if(shikibetu<1||shikibetu>6){/*もしshikibetuが1より小さいまたは6より大きいとき*/
return NULL;/*正しくなかった(失敗を返す)*/
}
fprintf(txt,"ファイル形式:P%d\n",shikibetu);/*txtにファイル形式:P%d\nをshikibetuとして入れる*/

do{
fgets(moji,255,pgm);/**/
}while (moji[0]=='#');

sscanf(moji,"%d%d",&x,&y);/*mojiから%d%dをx,yに入れる*/
if(x<1 || y<1){/*xが1より小さいまたはyより小さいとき*/
return NULL;/*正しくなかった(失敗を返す)*/
}
fprintf(txt,"x方向:%d y方向:%d",x,y);/*txtにx方向:%d y方向:%dをx,yとして入れる*/

if(shikibetu !=4 ||shikibetu !=1){/*もしshikibetuが4でない、または1でなかったら*/
do{
fgets(moji,255,pgm);/*pgmファイルの255*/
}while (moji[0]=='#');

sscanf(moji,"%d",&kido);/*mojiから%dをkidoに入れる*/
if(kido<1 || kido>256){/*もしkidoが1より小さいまたは256より大きいなら*/
return NULL;/*正しくなかった(失敗を返す)*/
}
fprintf(txt,"最大輝度:%d",kido);/*txtに最大輝度:%dをkidoとして入れる*/
}
puts("指定した画像ファイルのヘッダファイルをとりこみました。");


fclose(pgm);/*pgmファイルを閉じる*/
fclose(txt);/*txtファイルを閉じる*/

return(0);
}


引用返信 編集キー/
■60052 / inTopicNo.2)  Re[1]: 任意のPGMファイルからヘッダファイルを読み出力する
□投稿者/ よもやま (1回)-(2011/06/17(Fri) 00:42:29)
No60032 (S.S さん) に返信
> 初めまして、以下のプログラムを友人に教わりながら作ったのですが、何をやっていたのかいまいちわかっていません(^^;)。なので注釈も変だと思いますが・・。このプログラムを見ていったいなにをやっているのかわかりやすく説明していただけるとうれしいです。baron.pgmは画像でした。

説明を求められる前に
コード内の
fopen
fgets
sscanf
fprintf
puts
fclose
の関数リファレンスはお調べになられたのでしょうか。

「猫でもわかるプログラミング」サイトの「C言語編」を独習してみてください。
ttp://www.kumei.ne.jp/c_lang/index_c.html

引用返信 編集キー/
■60067 / inTopicNo.3)  Re[2]: 任意のPGMファイルからヘッダファイルを読み出力する
□投稿者/ S.S (2回)-(2011/06/18(Sat) 00:00:04)
No60052 (よもやま さん) に返信
> ■No60032 (S.S さん) に返信
>>初めまして、以下のプログラムを友人に教わりながら作ったのですが、何をやっていたのかいまいちわかっていません(^^;)。なので注釈も変だと思いますが・・。このプログラムを見ていったいなにをやっているのかわかりやすく説明していただけるとうれしいです。baron.pgmは画像でした。
>
> 説明を求められる前に
> コード内の
> fopen
> fgets
> sscanf
> fprintf
> puts
> fclose
> の関数リファレンスはお調べになられたのでしょうか。
>
> 「猫でもわかるプログラミング」サイトの「C言語編」を独習してみてください。
>

アドバイスありがとうございます!ざっと調べまして、またよくわからない文が出てきたらその
部分をピックアップしてみたいと思います!!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -