#1
by temdon » 5年前
Bmpファイルを読み込んで,何も手を加えずに,out.bmpファイルを作成するコードを個人のサイト様を参考にして作ってみたのですが,デバック中にブレークポイントが発生しましたと警告が出て止まります.
継続を選択するとexeファイルが作成され,コマンドプロンプトから実行すると,out.bmpが作成されている結果が得られました.
中断を選択すると18行目
コード:
fread(&biSize, sizeof(int), 1, fp); //情報ヘッダーにあるサイズを読み込む
に矢印が出現し「このスレッドによって現在の関数が実行された後,次に実行されるステートメントです」と表示されています.しかしデバックなしで開始を選択すると,このウインドは出てきません.
これは何が原因なのでしょうか.よろしくお願いします.
同じようなことで以前質問されている方がいましたが解決されなかったようです...(
viewtopic.php?t=13824)
以下ソースコード全文です.
コード:
#include<stdio.h>
#include<math.h>
int main(void) {
unsigned char img[512][512][3]; //読み込んだ画素情報を保存する
unsigned char BitMapFileHeader[14]; //BMPのファイルヘッダーを保存する
unsigned int biSize; //BMPのサイズを保存する
int biWidth; //BMPの幅を保存する
int biHeight; //BMPの高さを保存する
unsigned char BitMapInfoHeader[28]; //上記3つ以外のBMPの情報ヘッダーを保存する
int i, j, c; //for文用
FILE *fp; //ファイルポインタ
errno_t error;
fopen_s(&fp,"sample.bmp", "rb");
fread(&BitMapFileHeader, sizeof(char), 14, fp); //ファイルヘッダーを読み込む
fread(&biSize, sizeof(int), 1, fp); //情報ヘッダーにあるサイズを読み込む
fread(&biWidth, sizeof(int), 1, fp); //情報ヘッダーにある幅を保存
fread(&biHeight, sizeof(int), 1, fp); //情報ヘッダーにある高さを保存
fread(&BitMapInfoHeader, sizeof(char), 28, fp); //残りの情報ヘッダーを保存
for (i = 0; i < biWidth; i++) { //0から幅まで
for (j = 0; j < biHeight; j++) { //0から高さまで
for (c = 0; c < 3; c++) { //RGBのそれぞれ
fread(&img[i][j][c], sizeof(char), 1, fp); //画素の情報を読み込んで保存する
}
}
}
fclose(fp); //ファイルを閉じる
fopen_s(&fp,"out.bmp", "wb"); //パスのファイルへ書き込み
fwrite(&BitMapFileHeader, sizeof(char), 14, fp); //ファイルヘッダーを書き込む
fwrite(&biSize, sizeof(int), 1, fp); //情報ヘッダーへファイルサイズを書き込む
fwrite(&biWidth, sizeof(int), 1, fp); //情報ヘッダーへ幅を書き込む
fwrite(&biHeight, sizeof(int), 1, fp); //情報ヘッダーへ高さを書き込む
fwrite(&BitMapInfoHeader, sizeof(char), 28, fp); //残りの情報ヘッダーを書き込む
for (i = 0; i < biWidth; i++) { //0から幅まで
for (j = 0; j < biHeight; j++) { //0から高さまで
for (c = 0; c < 3; c++) { //RGBのそれぞれ
fwrite(&img[i][j][c], sizeof(char), 1, fp); //画素の情報を保存する
}
}
}
fclose(fp); //ファイルを閉じる
}
Bmpファイルを読み込んで,何も手を加えずに,out.bmpファイルを作成するコードを個人のサイト様を参考にして作ってみたのですが,デバック中にブレークポイントが発生しましたと警告が出て止まります.
継続を選択するとexeファイルが作成され,コマンドプロンプトから実行すると,out.bmpが作成されている結果が得られました.
中断を選択すると18行目
[code]
fread(&biSize, sizeof(int), 1, fp); //情報ヘッダーにあるサイズを読み込む
[/code]
に矢印が出現し「このスレッドによって現在の関数が実行された後,次に実行されるステートメントです」と表示されています.しかしデバックなしで開始を選択すると,このウインドは出てきません.
これは何が原因なのでしょうか.よろしくお願いします.
同じようなことで以前質問されている方がいましたが解決されなかったようです...(https://dixq.net/forum/viewtopic.php?t=13824)
以下ソースコード全文です.
[code]
#include<stdio.h>
#include<math.h>
int main(void) {
unsigned char img[512][512][3]; //読み込んだ画素情報を保存する
unsigned char BitMapFileHeader[14]; //BMPのファイルヘッダーを保存する
unsigned int biSize; //BMPのサイズを保存する
int biWidth; //BMPの幅を保存する
int biHeight; //BMPの高さを保存する
unsigned char BitMapInfoHeader[28]; //上記3つ以外のBMPの情報ヘッダーを保存する
int i, j, c; //for文用
FILE *fp; //ファイルポインタ
errno_t error;
fopen_s(&fp,"sample.bmp", "rb");
fread(&BitMapFileHeader, sizeof(char), 14, fp); //ファイルヘッダーを読み込む
fread(&biSize, sizeof(int), 1, fp); //情報ヘッダーにあるサイズを読み込む
fread(&biWidth, sizeof(int), 1, fp); //情報ヘッダーにある幅を保存
fread(&biHeight, sizeof(int), 1, fp); //情報ヘッダーにある高さを保存
fread(&BitMapInfoHeader, sizeof(char), 28, fp); //残りの情報ヘッダーを保存
for (i = 0; i < biWidth; i++) { //0から幅まで
for (j = 0; j < biHeight; j++) { //0から高さまで
for (c = 0; c < 3; c++) { //RGBのそれぞれ
fread(&img[i][j][c], sizeof(char), 1, fp); //画素の情報を読み込んで保存する
}
}
}
fclose(fp); //ファイルを閉じる
fopen_s(&fp,"out.bmp", "wb"); //パスのファイルへ書き込み
fwrite(&BitMapFileHeader, sizeof(char), 14, fp); //ファイルヘッダーを書き込む
fwrite(&biSize, sizeof(int), 1, fp); //情報ヘッダーへファイルサイズを書き込む
fwrite(&biWidth, sizeof(int), 1, fp); //情報ヘッダーへ幅を書き込む
fwrite(&biHeight, sizeof(int), 1, fp); //情報ヘッダーへ高さを書き込む
fwrite(&BitMapInfoHeader, sizeof(char), 28, fp); //残りの情報ヘッダーを書き込む
for (i = 0; i < biWidth; i++) { //0から幅まで
for (j = 0; j < biHeight; j++) { //0から高さまで
for (c = 0; c < 3; c++) { //RGBのそれぞれ
fwrite(&img[i][j][c], sizeof(char), 1, fp); //画素の情報を保存する
}
}
}
fclose(fp); //ファイルを閉じる
}
[/code]