半角英数字での分岐ができますが、全角を使うとできません
プログラミングを始めてばかりの初心者なので、お願いします
#include <stdio.h>
int main()
{
char ch;
printf("一文字入力してください\n");
scanf("%c",&ch);
if (ch == "あ") printf("正解です");
else printf("違います");
return 0;
}
全角文字でif分岐(C++)
Re:全角文字でif分岐(C++)
%cは1バイトしか読み込めないので、この方法では無理です。
これでどうですか?
これでどうですか?
#include <stdio.h> #include <string.h> int main() { char ch[3]={0,0,0}; printf("一文字入力してください\n"); scanf("%2s",ch); if (strcmp(ch,"あ")==0) printf("正解です"); else printf("違います"); return 0; }
Re:全角文字でif分岐(C++)
みけCATさんとほぼ同じですが、C++のcinとcoutを使ってみました。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[3];
cout << "1文字入力してください->";
cin >>str;
if(strcmp(str,"あ")==0) cout << "正解です。\n";
else cout << "不正解です。\n";
return 0;
}
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[3];
cout << "1文字入力してください->";
cin >>str;
if(strcmp(str,"あ")==0) cout << "正解です。\n";
else cout << "不正解です。\n";
return 0;
}
Re:全角文字でif分岐(C++)
処理系不明なので、"あ"が(ナル文字を含めて)3バイトだと決め打ちにするのは危険です。
char ch[MB_LEN_MAX + 1] = { 0 };
としておくべきでしょう。
ロケールが日本語に対応するのであれば、
wchar_t wc;
setlocale(LC_CTYPE, ""); /* ロケールの設定は環境にあわせること */
scanf("%lc", &wc);
if (wc == L'あ') printf("正解です");
...
とするのもよいでしょう。
char ch[MB_LEN_MAX + 1] = { 0 };
としておくべきでしょう。
ロケールが日本語に対応するのであれば、
wchar_t wc;
setlocale(LC_CTYPE, ""); /* ロケールの設定は環境にあわせること */
scanf("%lc", &wc);
if (wc == L'あ') printf("正解です");
...
とするのもよいでしょう。