C言語ならアタシに聞きなさい<36>

このエントリーをはてなブックマークに追加
327hiloshi
すいません。また質問です。
char型の変数をprintfで表示するための変換指定子はなんですか?
%dでやると、JISコードの値が出てしまう・・
>>327
JISじゃないだろ
%c
>>327
%c

つか、これくらいは聞くなよ。参考書読め。期待してるんだから頑張れよ。
>>327
> JISコードの値
おそらくAsciiコードかShift_Jisコードだと思うんだが
ところで文字コードも環境(以下略
char anny = 'A', bany = 'B', chery = 'C', domy = 'D';
puts(" anny bany chery domy");
puts("------------------------");
printf(" %c %c %c %c\n", anny, bany, chery, domy);
printf(" %c %c %c %c\n", domy, chery, bany, anny);
332hiloshi:02/10/23 21:41
すいません。今度はもっと上級な質問をします。

でもオレの持ってる本には文字列は詳しく書いてるんですけど
文字のことはさっぱりで・・・。
でもここのおかげで少しずつわかってきたんで
みなさんに感謝多々です。
>>332
何のためのWebだよ。
>>332
>すいません。今度はもっと上級な質問をします。
じゃなくて、ある程度自分で調べてから質問しろよってこと
335hiloshi:02/10/23 21:46
ある程度調べるってことで、ここで質問してるんですよ
336hiloshi:02/10/23 21:48
あとコードの事ですけど、
オレの持ってる本はJISコードという文字コード体系が広く普及してる
って書いてあるんだけど、これは間違ってんの?
>>335
ある程度調べる、じゃなくて
ある程度 *自分で* 調べる、だ。
>>335
次からは死のうな。

>>336
環境依存。メジャーどころだけ見ると明らかに間違い。
>>336
それは間違っていない。
が、広く普及してるからと言ってあなたの環境もそれを採用しているかどうかは
別の話だ。
>>335
「調べる」 と 「訊く」 の区別は大丈夫か?
341hiloshi:02/10/23 21:56
あーうぜーなお前ら
どうせ禿げたオタクばっかだろ
黙って質問に答えてればいいんだよ
それくらいしか能のないんだから
先生気分ですか?じこまんですか?
どうぞ死んでください。
342ppp:02/10/23 21:56
BMPファイル情報表示は完成したのですが、
画像ファイルの白黒化を教えて頂きたいです。
malloc()関数を使い、8・24ビットカラー画像どちらでも
変換できるといったように。
どなたか、ご親切な方のサンプルソースをご教授願いたいです。
/* #include */
#include<stdio.h>
#include<stdlib.h> //exit用
#include<conio.h>   //getch用
#pragma pack(1) //構造体メンバを1バイトサイズの単位に設定

/* ファイルヘッダ構造体型 */
typedef struct tagBITMAPFILEHEADER {
unsigned short bfType; //フォーマットの種類を表す数値(Windows BMPの場合 0x4D42)
unsigned long bfSize; //ファイルサイズ
unsigned short bfReserved1; //予約領域(0)
unsigned short bfReserved2; //予約領域(0)
unsigned long bfOffBits; //ファイル先頭からのバイト数で表したイメージデータの位置
} BITMAPFILEHEADER;
343ppp:02/10/23 21:57
/* 情報ヘッダ構造体型(BMPファイル独自のヘッダ) */
typedef struct tagBITMAPINFOHEADER {
unsigned long biSize; //情報ヘッダのサイズ(40)
long biWidth; //画像の幅(ピクセル単位)
long biHeight; //画像の高さ(ピクセル単位)
unsigned short biPlanes; //プレーン(レイヤー)の数(通常1)
unsigned short biBitCount; //1ピクセルあたりのビット数と画像の種類(下記補足参照)
unsigned long biCompression; //圧縮の種類(下記補足参照)
unsigned long biSizeImage; //イメージデータのみのバイトサイズ
unsigned long biXPelsPerMeter; //横軸画素数/メートル(省略値0)
unsigned long biYPelsPerMeter; //縦軸画素数/メートル(省略値0)
unsigned long biClrUsed; //画像中で使用されている色数(RGBQUADの個数)
//画像タイプの最大発色数と同じ場合は0
unsigned long biClrImportant; //画像を表示する上で重要な色の数、すべての色が重要な場合は0
} BITMAPINFOHEADER;

/* カラーテーブル */
typedef struct tagRGBQUAD {
unsigned rgbBlue; //青の輝度
unsigned rgbGreen; //緑の輝度
unsigned rgbRed; //赤の輝度
unsigned rgbReserved; //Must be zero
} RGBQUAD;
344ppp:02/10/23 21:57
/* プロトタイプ宣言 */
void printBmp(BITMAPFILEHEADER fh,BITMAPINFOHEADER ih); //BMPファイルのヘッダ情報の表示
void readBmp(char *filename,BITMAPFILEHEADER *fh,BITMAPINFOHEADER *ih); //BMPファイルのヘッダを読み込む

/* main start */
void main(int argc,char *argv[])
{
BITMAPFILEHEADER bfh; //ファイルヘッダ構造体
BITMAPINFOHEADER bih; //情報ヘッダ構造体
char *filename;

filename = argv[1];

readBmp(filename,&bfh,&bih);

printBmp(bfh,bih);

if(argc!=2)
{
printf("\nコマンドライン引数エラー!\n"); //コマンドライン引数の確認
exit(1);
}

fopen(argv[1],"rb");
}
/* main end */
345ppp:02/10/23 21:57
/* BMPファイルのヘッダ情報の表示 */
void printBmp(BITMAPFILEHEADER fh,BITMAPINFOHEADER ih)
{
printf("<<ファイルヘッダの内容>>\n\n");

printf("ファイルタイプ = 0x%X (BM)\n",fh.bfType);
printf("ファイルサイズ = %d バイト\n",fh.bfSize);
printf("予約領域1 = %d",fh.bfReserved1);
printf("   予約領域2 = %d\n",fh.bfReserved2);
printf("オフセット = %d バイト\n\n",fh.bfOffBits);

printf("<<情報ヘッダの内容>>\n\n");

printf("情報ヘッダのサイズ = %d バイト\n",ih.biSize);
printf("画像の幅 = %d ピクセル\n",ih.biWidth);
printf("画像の高さ = %d ピクセル\n",ih.biHeight);
printf("プレーン数 = %d\n",ih.biPlanes);
printf("ビット/ピクセル = %d bpp\n",ih.biBitCount);
printf("圧縮の種類 = %d (RGB)\n",ih.biCompression);
printf("イメージデータサイズ = %d バイト\n",ih.biSizeImage);
printf("横軸画素数/m = %d pixel/m  ×",ih.biXPelsPerMeter);
printf("  縦軸画素数/m = %d pixel/m\n",ih.biYPelsPerMeter);
printf("使用色数 = %d",ih.biClrUsed);
printf("   重要色数 = %d\n\n",ih.biClrImportant);

return;
}
346ppp:02/10/23 21:58
/* BMPファイルのヘッダ情報を読み込む */
void readBmp(char *filename,BITMAPFILEHEADER *fh,BITMAPINFOHEADER *ih)
{
FILE *fp;

/* ファイルオープン */
printf("\n入力ファイル : %s",filename);

if((fp=fopen(filename,"rb"))==NULL)
{
printf("\nオープンエラー!\n");
exit(1);
}

printf("\n\n");

/* ファイル読み込み */
fread(&(fh->bfType),sizeof(fh->bfType),1,fp);
fread(&(fh->bfSize),sizeof(fh->bfSize),1,fp);
fread(&(fh->bfReserved1),sizeof(fh->bfReserved1),1,fp);
fread(&(fh->bfReserved2),sizeof(fh->bfReserved2),1,fp);
fread(&(fh->bfOffBits),sizeof(fh->bfOffBits),1,fp);
>>341
さっきの荒らしの方ですね。
348ppp:02/10/23 21:58
fread(&(ih->biSize),sizeof(ih->biSize),1,fp);
fread(&(ih->biWidth),sizeof(ih->biWidth),1,fp);
fread(&(ih->biHeight),sizeof(ih->biHeight),1,fp);
fread(&(ih->biPlanes),sizeof(ih->biPlanes),1,fp);
fread(&(ih->biBitCount),sizeof(ih->biBitCount),1,fp);
fread(&(ih->biCompression),sizeof(ih->biCompression),1,fp);
fread(&(ih->biSizeImage),sizeof(ih->biSizeImage),1,fp);
fread(&(ih->biXPelsPerMeter),sizeof(ih->biXPelsPerMeter),1,fp);
fread(&(ih->biYPelsPerMeter),sizeof(ih->biYPelsPerMeter),1,fp);
fread(&(ih->biClrUsed),sizeof(ih->biClrUsed),1,fp);
fread(&(ih->biClrImportant),sizeof(ih->biClrImportant),1,fp);

fclose(fp);
getch();
}
341 について謝罪しない限り hiloshi は放置
350hiloshi:02/10/23 21:59
ところで皆さんはポインタを習得するのに
どれくらいかかりました?
トリップ必須だなっと
352hiloshi:02/10/23 22:00
>>349
オレじゃないよーー!!!
誰だーーー!!!