「'const char ' から 'char ' に変換できません。」←この原因が分かりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
wasawasa
記事: 94
登録日時: 6年前

「'const char ' から 'char ' に変換できません。」←この原因が分かりません

#1

投稿記事 by wasawasa » 6年前

予め変数に格納した文字列をstrcatでつなぎ合わせてDrawStringToHandleで描画するという下記の記述を書いたのですが、文字列のパーツを変数に格納する時に「error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。」というエラーが発生してしまいます。
文字列リテラルがconst char形式でありそれをchar形式の変数に入れようとしていておかしくなっているらしいのですが、文字列リテラルの内容をchar型変数に格納する記述は他の場所でも用いており、そちらでは特にエラーは発生していないのでこれ自体が原因とは思えません。
このエラーは何故起きていて、どうしたらエラーが起きないようにできるでしょうか?
どなたかよろしくお願いします。

コード:

#include "DxLib.h"
struct LetPart{//テキストパーツ
	char Type[5][3];
};struct LetPart Part;
void ini(){
	Part.Type[0]="【";
	Part.Type[1]="族";
	Part.Type[2]="・";
	Part.Type[3]="/";
	Part.Type[4]="】";
};
void test(){
	char rewrite[]="pic/illu/";
	int NameCol = GetColor(25,25,25);//黒
	int TypeFont = CreateFontToHandle("AR P隷書体M",9,-1,DX_FONTTYPE_ANTIALIASING);
	DrawStringToHandle(2,5,rewrite,NameCol,TypeFont);
}

void CardLetMake(){
	char Write[4096]="";//記入用文字列
	int NameCol = GetColor(25,25,25);//黒
	int TypeFont = CreateFontToHandle("AR P隷書体M",9,-1,DX_FONTTYPE_ANTIALIASING);
	DrawStringToHandle(2,5,rewrite,NameCol,TypeFont);
	strcpy(Write,Part.Type[0]);
	strcat(Write,Part.Type[1]);
	strcat(Write,Part.Type[2]);
	strcat(Write,Part.Type[4]);
	DrawStringToHandle(23,295,Write,NameCol,TypeFont);
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	ChangeWindowMode(TRUE); // ウィンドウモードに設定
	if( DxLib_Init() == -1 ){return -1 ;}//DXライブラリ初期化処理 エラーが起きたら直ちに終了
	SetDrawScreen( DX_SCREEN_BACK ); //描画先を裏画面に設定

	ini();
	CardLetMake();
	ScreenFlip(); //裏画面を表画面に反映

	WaitKey() ;				// キー入力待ち

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;				// ソフトの終了 
}
エラー内容
1>main.cpp
1>c:\users\visual studio 2008\projects\cardmaker\main.cpp(6) : error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\visual studio 2008\projects\cardmaker\main.cpp(7) : error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\visual studio 2008\projects\cardmaker\main.cpp(8) : error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\visual studio 2008\projects\cardmaker\main.cpp(9) : error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\visual studio 2008\projects\cardmaker\main.cpp(10) : error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。
1> この変換が可能なコンテキストはありません。

初級者
記事: 200
登録日時: 10年前

Re: 「'const char ' から 'char ' に変換できません。」←この原因が分かりません

#2

投稿記事 by 初級者 » 6年前

strcpy()
を使う必要があるのではないでしょうか。

アバター
みけCAT
記事: 6351
登録日時: 10年前
住所: 千葉県
連絡を取る:

Re: 「'const char ' から 'char ' に変換できません。」←この原因が分かりません

#3

投稿記事 by みけCAT » 6年前

wasawasa さんが書きました:文字列リテラルの内容をchar型変数に格納する記述は他の場所でも用いており、そちらでは特にエラーは発生していないのでこれ自体が原因とは思えません。

コード:

char hoge[10]="hoge"; // 初期化時なのでOK
char fuga[10];
fuga="fuga"; // 初期化時以外はNG
参考 : http://9cguide.appspot.com/14-02.html
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る