実現したいこと
入力:しんぶんし
回分です。
発生している問題・分からないこと
回分です。になりません。
該当のソースコード
#include <stdio.h> #include <wchar.h> #include <locale.h> int main(void) { wchar_t str[256]; size_t len; setlocale(LC_ALL, ""); //(UTF-8対応) wprintf(L"文字列を入力してください:"); fgetws(str, 256, stdin); // 改行削除 len = wcslen(str); if (len > 0 && str[len - 1] == L'\n') { str[len - 1] = L'\0'; len--; } // 回文判定 int is_palindrome = 1; size_t left = 0, right = len - 1; while (left < right) { if (str[left] != str[right]) { is_palindrome = 0; break; } left++; right--; } if (is_palindrome) wprintf(L"回文です。\n"); else wprintf(L"回文ではありません。\n"); return 0; }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
数字、英文字では、「回文です」とでるのですが、日本語だとでません。
補足
vs code+mingw64です。
utf-8で保存です。
Ubuntu Linux 25.04/gcc 14.2.0 でビルド、「しんぶんし」を入力すると「回文です。」と表示されます。もしかして文字エンコーディングを CP932 にしたままで文字列を入力していませんか?
追試。
Xubuntu 24.04LTSでclang18.1.3でコンパイル。同様に「しんぶんし」で入力すると「回文です。」と表示。
melian氏が言ってる通り、恐らくWindowsで?ターミナル(DOS窓/PowerShell)の文字コードがUTF-8になってない、って事だろうね。
文字コードの設定(CHCP):
https://www.javadrive.jp/command/display/index5.html
chcp で確認しました。
Active code page: 65001
でした。
システムロケールのところもチェックはいってました。

回答4件
あなたの回答
tips
プレビュー