\source.cpp(37): error C2440: '=' : 'errno_t' から 'FILE *' に変換できません。
1> 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
\source.cpp(58): error C2440: '=' : 'errno_t' から 'FILE *' に変換できません。
1> 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
とエラーが出たのですがどのように直したらいいでしょうか?
#include <stdio.h>
#include <process.h>
#define X_SIZE 200 // 処理できる最大画像
#define Y_SIZE 160
#define LX_SIZE 400 // 処理できる最大画像
#define LY_SIZE 320
#define HIGH 255 // 画像の最大強度値
#define LOW 0 // 画像の最小強度値
#define LEVEL 256 // 画像の強度レベル値
// BMPファイルのフォーマットに従って用意した変数
typedef unsigned short WORD;
typedef unsigned long DWORD;
unsigned char image_in[Y_SIZE][X_SIZE][3]; // 入力カラー画像配列
unsigned char image_out[LY_SIZE][LX_SIZE][3]; //出力カラー画像配列
//********************************************
// 24Bit RAW ファイル読み込み *
//********************************************
void readRAW(
char *filename, // RAW画像ファイル名
unsigned char image[Y_SIZE][X_SIZE][3] // 24ビットRGB画像配列
)
{
FILE *fp;
// ファイルオープン
if ((fp = fopen_s(&fp, filename, "rb")) == NULL) {
printf("readRAW: Open error!\n");
exit(1);
}
printf("input file : %s\n", filename);
fread(image, 1, X_SIZE*Y_SIZE * 3, fp);
fclose(fp);
}
//******************************************************
// 24ビット-ビットマップデータをRAWファイルに出力 *
//******************************************************
void writeRAW(
char *filename,
unsigned char image[LY_SIZE][LX_SIZE][3])
{
FILE *fp;
// ファイルオープン
if ((fp = fopen_s(&fp,filename, "wb")) == NULL) {
printf("writeRAW: Open error!\n");
exit(1);
}
printf("output file : %s\n", filename);
fwrite(image, 1, LX_SIZE*LY_SIZE * 3, fp);
fclose(fp);
}
//**********************************************
// RGBカラー画像を二倍拡大 *
//**********************************************
void Image_2bai(
unsigned char image_in[Y_SIZE][X_SIZE][3],
unsigned char image_out[LY_SIZE][LX_SIZE][3])
{
int y, x, z;
for (y = 0; y<Y_SIZE; y++)
for (x = 0; x< X_SIZE; x++)
for (z = 0; z<3; z++){
image_out[2 * y][2 * x][z] = image_in[y][x][z];
image_out[2 * y][2 * x + 1][z] = image_in[y][x][z];
image_out[2 * y + 1][2 * x][z] = image_in[y][x][z];
image_out[2 * y + 1][2 * x + 1][z] = image_in[y][x][z];
}
for (y = 0; y<Y_SIZE / 2; y++)
for (x = 0; x< X_SIZE / 2; x++)
for (z = 0; z<3; z++){
image_out[y][x][z] = image_in[2 * y][2 * x][z];
}
}
void main(void)
{
char input_name[100], output_name[100];
printf("入力画像ファイル名(*.raw):"); scanf("%s", input_name);
readRAW(input_name, image_in); // 画像の入力,RGB24ビットカラーBMP画像を配列に格納
//画像処理:左右反転
Image_2bai(image_in, image_out); // RGBカラー画像を白黒画像に変換
printf("左右反転画像ファイル名(output_name.raw):"); scanf("%s", output_name);
writeRAW(output_name, image_out); // 画像出力
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
fopen_s()ではなくfopen()を使う。
というのも有りです。というか、既にそういう回答もらっていますよね。
SYさん?それともHIRO31さん?はたまたgyukiさん?
No.1
- 回答日時:
>\source.cpp(37): error C2440: '=' : 'errno_t' から 'FILE *' に変換できません。
>1> 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
>\source.cpp(58): error C2440: '=' : 'errno_t' から 'FILE *' に変換できません。
>1> 整数型からポインター型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
>とエラーが出たのですがどのように直したらいいでしょうか?
リファレンスくらい見ましょう。
VisualStudioなら関数にカーソル合わせてF1キー押せば表示されませんか?
https://msdn.microsoft.com/ja-jp/library/z5hh6ee …
ファイルポインタは第1引数に格納されて返されますので、戻り値が0だったら正常終了です。
if ((fp = fopen_s(&fp, filename, "rb")) == NULL) {
は
if (fopen_s(&fp, filename, "rb") != 0) {
でよいでしょう。
# エラー表示するならerrno_t型の変数に一度受け取って、その後のprintf()で出力すればよいかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
Cでファイルの行数をカウントす...
-
構造体メンバの初期化
-
C言語のプログラムで、途中で止...
-
プログラミングの授業の課題です
-
C言語で複数列のデータを1列の...
-
fread(),fwrite()等について
-
[C]セグメンテーションエラー:...
-
#defineが使用するメモリ領域に...
-
C++で指定文字列のカウント方法...
-
printf による16進表示について
-
fscanfの使い方
-
マイナスからプラスへ転じた時...
-
「指定されたキャストは有効で...
-
数字以外が入力されたらエラー...
-
C言語で簡単なパックマンゲーム...
-
比較回数と交換回数表示について
-
C言語での引数の省略方法
-
2÷3などの余りについて
-
4の倍数を論理演算で表す。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
#defineが使用するメモリ領域に...
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
C言語のプログラムで、途中で止...
-
プログラミングの授業の課題です
-
char型2つを結合し、short型に...
-
C言語でのCSVファイルの読み出...
-
矢印キーを押下してコンソール...
-
【C言語】全角文字の配列を、全...
-
エラーについて質問です。
-
リストの作成と出力(C言語)
-
バイナリファイル(画像)のよみ...
-
[C]セグメンテーションエラー:...
-
WinInetのInternetOpenUrl関数...
-
VC++でSQLへSELECT文を送ったの...
-
受信データから必要な部分のみ...
-
c言語で文書を読み込み、単語の...
-
reallocでエラー
おすすめ情報