char* str[]の表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ちる

char* str[]の表示

#1

投稿記事 by ちる » 14年前

char* str[]の任意の一文字を表示させたいのです。
1バイト文字は表示することができるのですが、2バイト文字(日本語)が表示を出来ずに困っています。

コード:

#include "stdio.h"
void main(void)
{
	char* str[2]=
	{
		"あああbc",
		"dfg"
	};
	printf("%c",str[0][0]);
}
どのようにすれば表示できるようになるかご助言お願いします。

ちる

Re: char* str[]の表示

#2

投稿記事 by ちる » 14年前

自己解決しました

コード:

#include "stdio.h"
void main(void)
{
    char* str[2]=
    {
        "あああbc",
        "dfg"
    };
    printf("%c%c",str[0][0],str[0][1]);
}
とした所、「あ」が表示されました。
2バイトだから二つ分表示させればよかったのですね。

ちる

Re: char* str[]の表示

#3

投稿記事 by ちる » 14年前

チェック入れ忘れです。

かずま

Re: char* str[]の表示

#4

投稿記事 by かずま » 14年前

ちる さんが書きました: 2バイトだから二つ分表示させればよかったのですね。
Ubuntu で 環境変数 LANG=jp_JP.UTF-8 では、「あ」は3バイトです。

コード:

#include <stdio.h>

int main(void)
{
    char *str[] = {
        "ありがとう",
        "감사",
        "Thank you",
        "谢谢",
        "спасибо",
        "ขอบคุณ",
    };
    int i;
    for (i = 0; i < sizeof(str)/sizeof(*str); i++)
        printf(" [%c%c]", str[i][0], str[i][1]);
    printf("\n");
    for (i = 0; i < sizeof(str)/sizeof(*str); i++)
        printf(" [%c%c%c]", str[i][0], str[i][1], str[i][2]);
    printf("\n");
    return 0;
}
実行結果

コード:

 [??] [??] [Th] [??] [с] [??]
 [あ] [감] [Tha] [谢] [с?] [ข]

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: char* str[]の表示

#5

投稿記事 by ISLe » 14年前

かずま さんが書きました:Ubuntu で 環境変数 LANG=jp_JP.UTF-8 では、「あ」は3バイトです。
LANG環境変数とは関係なくて、ソースファイルをUTF-8で保存すれば3バイトですけど、Shift_JISで保存すると2バイトですよ。
Shift_JISの「あ」の2バイトをLANG=jp_JP.UTF-8環境で表示すると文字化けしますけど。

閉鎖

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