
No.4ベストアンサー
- 回答日時:
お疲れ様です。
まずお伺いしたのがOSおよび開発するためのコンパイラです。
ロケール等の話は分かりませんが、昔のC言語で日本語を扱う場合には全角文字1文字で2個つのchar領域を使用していました。
(マルチバイト文字セットと言います。)
詳細は参考URLを参照の事。
windowsでVCと仮定した場合、charを使われていると言うことは、多分、shift-jis(シフトJIS)で文字列を扱っていると思われます。
結論として全角文字1文字だけを取り出したいという場合は、結局char2個分のデータを取り出す必要があります。
>char AA[]={'全','角'};
を
char AA[]="全角";
とし
>printf("%s%s\n" , AA[0],AA[1] ) ;
を
printf("%c%c\n" , AA[0],AA[1] ) ;
とすれば、「全」だけを表示する事が可能と思われます。
日本語を文字列で表示する為の文字コードについては
Shift-JISだけでなく、UnicodeやUTF・EUC・JISなどがあります。
もう少し詳しく記載してあるホームページはないか探してみましたが、ちょっと無理でした。
参考URL:http://marupeke296.com/CPP_charUnicodeWideChar.h …
No.8
- 回答日時:
処理系に依存するかもしれませんが。
Visual Studio 2005で確認しました。
#include <stdio.h>
#include <locale.h>
int main(void)
{
wchar_t *locale = NULL;//文字セット格納用
wchar_t *string = L"全角文字";
wchar_t data;
locale = _wsetlocale(LC_CTYPE, L"");//システムの文字セットを取得
_wsetlocale(LC_ALL, locale);//対応後をセット
data = string[0];
wprintf_s(L"%c\n", data);
return (0);
}
No.7
- 回答日時:
#1で挙げた方法であれば、処理系に依存せずに実現できますが、そうでなければどうしても処理系に依存します。
いまさらながら処理系を補足してください。
ちなみに、char型は8ビットかどうか、符号付きかどうかは処理系定義です。また、'全', '角', '文', '字'の各文字がchar型の表現範囲に収まるかどうかも処理系に依存します。仮にchar型が8ビットだとしても。
No.6
- 回答日時:
char AA[]={'全','角'};
'全'はint型でcharの取り得る範囲(-128~127)を超えているのでこの初期化ではあなたの意図している値は代入されないでしょう
No.5
- 回答日時:
> XX={全角文字}として、"全"とポインタを使って取り出すのはどのようにすればよいのでしょうか。
意味が分かりませんが、printfで出力したいのであれば...
char AA[] = "全角";
int n = mblen(AA, MB_CUR_MAX);
printf("%.*s%s\n", n, AA, AA + n);
とすればよいかと思います。
あるいは、(厳密には処理系に依存しますが...)
wchar_t AA[] = L"全角";
printf("%lc%lc\n", AA[0], AA[1]);
としてもよいでしょう。
もとの文字列がどうしてもcharの配列でなければならないなら、この方法は使えません。
actaさん、回答有り難うございます。
下のようなコードですが、エラ-です、「zenkaku[0])」を「zenkaku」
としても同じです。
ある特定の要素を指定して、一文字だけをどうやったら取り出せるのでしょうか。
==========================================================
int main(void)
{
char *zenkaku = "全角文字" ;
printf("%s\n" , zenkaku[0]);
return 0;
}
No.3
- 回答日時:
>char AA[]{"全角文字"};
最初にAA[]の中身をこうしたい(文法は少し違ってますが)と書かれているのに、
>char AA[]={'全','角'};
どうして、このように書かれるのですか?
さらに、
>printf("%s%s\n" , AA[0],AA[1] ) ;
>printf("%s%s" , AA[2],AA[3] ) ;
AA[0]~[3]は、すべて全角文字の片割れでありまして、1バイトです。
これらを出力する制御文字として"%s"は本当に正しいですか?
No.2
- 回答日時:
>全角文字の入ったchar AA[]{"全角文字"};から"全"という文字一字を取り出す時にAA[0]とかくとエラーになります。
どういったコードを書かれて、何をしたときにどんなエラーが出るのでしょうか。
単に「エラーが出る」だけでは、いかんともしがたいです。
AA[0]とAA[1]の2バイトを出力するコードを書いたとき、どうなりますか?
asuncionさん、回答有り難う御座います。
下のようなコードを書いてやりました。
"エラーがあります"と表示されて
"multiple makers at this line
-format argument is not a pointer" の警告です。
宜しくお願いします。
=============================================================
#include <stdio.h>
int main(void)
{
char AA[]={'全','角'};
printf("%s%s\n" , AA[0],AA[1] ) ;
printf("%s%s" , AA[2],AA[3] ) ;
return 0 ;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 学生ローン日本学生機構の奨学金について詳しい方教えて下さい。 保証人の職場にパソコンから株式会社○○ 1 2022/04/13 05:57
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Word(ワード) Windows11キーボードの調子が悪いので治し方を教えてください。 【症状】 1つ目 キーボードの 5 2022/07/03 14:51
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- メルカリ メルカリ ゆうゆうメルカリ便の支払い後の 住所変更についてです。 出品者の方から 入力内容をご確認下 1 2022/07/26 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CStringからchar*への型変換に...
-
C言語のintとcharの違いってな...
-
fstream型オブジェクトを関数の...
-
C言語にて構造体のメンバがNULL...
-
new charとnew char[N]の違いは?
-
全体をNULLクリアするより、最...
-
小数点入りの文字列をfloat型に...
-
文字列置換のアルゴリズムを教...
-
fread()関数とfwrite()関数につ...
-
csvファイルを構造体に格納した...
-
コマンドライン引数 *argv[]は...
-
動的メモリの初期化方法について。
-
C++17で、unsigned char * 配列...
-
ポインタを使って回文かどうか...
-
char 文字列型 の表現範囲が-12...
-
C言語でポインターで詰まってい...
-
'\\0'とはなんですか?
-
入力された文字列の中の数字を...
-
関数から配列を返すには?
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringからchar*への型変換に...
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
char型にint型の数値を代入する。
-
C言語にて構造体のメンバがNULL...
-
fgetc( )の戻り値はなぜ整数??
-
char 文字列型 の表現範囲が-12...
-
fstream型オブジェクトを関数の...
-
C++17で、unsigned char * 配列...
-
DWORDとcharの変換
-
文字列内の数字削除
-
new charとnew char[N]の違いは?
-
文字型配列に格納した空白の切捨て
-
C++Builder 2009 テキスト...
-
csvファイルをfscanfで読み込む...
-
文字列の途中から途中までを抽出
-
[C] 構造体メンバーのカンマ区...
-
エクセルのMID関数は、C言語では?
-
小数点入りの文字列をfloat型に...
-
wsprintf( ポインタ , "%d" , "...
おすすめ情報