2016-10-23 7 views
0

私はユーザーの入力を取得してメッセージボックスに表示しようとしています。私が抱えている問題は、文字列の前に 'L'がない場合、それは不器用なように出てきます。私のchar []は 'input'という名前の文字列を格納しますが、そこに 'L'があるようにするにはどうしたらいいですか?これまでに試したことはすべて、私にエラーを与えました。、charをwchar_tに変更しました。文字列リテラルを変数の前に置きます

#include <stdio.h> 
#include <windows.h> 

int main() 
{ 
    printf("Enter message to be displayed\n"); 
    char input[20]; 
    fgets(input,20, stdin); 
    MessageBox(NULL, (LPCWSTR)input, (LPCWSTR)L"You wrote", MB_OK); 
    return 0; 
} 
+0

「L」は「ワイド文字列リテラル」を示します。 –

+0

私はあなたが 'L'を必要としていることを理解しています。質問は、ユーザーから入力を受けて変数に格納する場合にどこに置くのですか? –

+1

あなたはそうではありません。 'char'の代わりに' wchar_t'を使います。そして、あなたはワイド文字入力関数、 'fgetws()'などを使用します。 –

答えて

0

おそらくお使いの環境ではコンパイルプロセスのための_UNICODEを定義し、MessageBoxマクロはMessageBoxWに展開されます。これであなたのコードを交換してみてください。

MessageBoxA(NULL, input, "You wrote", MB_OK); 

これは、明示的にあなたが適切fgets()の結果を処理するANSIバージョンを、使用したいと述べています。

+0

それを修正しました。私はちょっと変わったものにちょっと混乱しています。 –

+0

また、私はちょうど質問を投稿しました。 –

関連する問題