今日の日付と曜日を表示するプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジェリナゲ
記事: 17
登録日時: 11年前

今日の日付と曜日を表示するプログラム

#1

投稿記事 by ジェリナゲ » 10年前

今日の日付と曜日を表示するプログラム (解きながら学ぶC言語 p264) が以下のように書かれていました、なぜ16行目がchar[][3]のようになるのかがわかりません。
自分はchar[] として20行目の%sを%cにすればいいと思ったのですが、コンパイルエラーがでてしまいました。なぜ二次元配列にするのでしょうか、
またなぜ3列なのでしょうか、よろしくお願いします。

コード:

 
#include <stdio.h>
#include <time.h>

void put_date(void);

int main(void){
  put_date();

  return 0;
}

void put_date(void){
  time_t current;
  struct tm *local;
  char wday_name[][3]={"日","月","火","水","木","金","土"};

  time(&current);
  local=localtime(&current);
  printf("今日は%4d年%02d月%02d日(%s)です。",local->tm_year+1900
	                                   ,local->tm_mon+1
	                                   ,local->tm_mday
	                                   ,wday_name[local->tm_wday]
	 );

  return ;
}

猫でもわかるシリーズ派

Re: 今日の日付と曜日を表示するプログラム

#2

投稿記事 by 猫でもわかるシリーズ派 » 10年前

配列の1次目は7つの曜日を保管する配列、
2次目は曜日の文字を保存するための配列かと。

3列なのは日本語文字が2バイトであるためでしょう。1列だと足りませんし、3列あれば十分だからだと思います。

wday_name[(7つの曜日を格納)][3(文字バイト数)]

ジェリナゲ
記事: 17
登録日時: 11年前

Re: 今日の日付と曜日を表示するプログラム

#3

投稿記事 by ジェリナゲ » 10年前

なるほど、ありがとうございます

kikanshi

Re: 今日の日付と曜日を表示するプログラム

#4

投稿記事 by kikanshi » 10年前

配列にセットされる曜日は「文字列」です。
「漢字(2バイト)+終端文字(1バイト)」で合計3バイトとなります。
よって配列の要素数が3になります。

閉鎖

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