(c言語)日本語の%cによる表記

macで日本語を%cを使って躓いたことの備忘録です。。

日本語は英語とは異なり、マルチバイトを要求します。

そのため、

str[]="あいう";
printf("%c%c",str[0],str[1]);

他のサイトでよく見かける書き方。

しかし、macで実行すると、うまく表示できない。

そこでbyteを確認してみると、

int main(){
  char str_1[]="あ";
  char str_2[]="い";
  char str_3[]="う";

  printf("あ[%d],い[%d],う[%d]",sizeof(str_1),sizeof(str_2),sizeof(str_3));
  return 0;
}

結果

[4],い[4],う[4]

??? 4byte??2byteじゃないの?

てか、そしたら合計12?

int main(){
  char str[]="あいう";
  printf("あいう[%d]",sizeof(str));
  return 0;
}

結果

あいう[10]

あ、str_1,str_2,str_3の終わりに終端文字(1byte)があるんだった! つまり、ひらがなは3byte?

int main(){
  char str[]="あいう";
  printf("%c%c%c",str[0],str[1],str[2]);
  return 0;
}

結果

うまくいきました!