回答受付が終了しました

生年月日は数値か、文字列か。 C言語で構造体を勉強していて疑問に思ったのですが、以下のデータはそれぞれ整数型で扱いますか?それとも文字型の配列にしますか?

生年月日は数値か、文字列か。 C言語で構造体を勉強していて疑問に思ったのですが、以下のデータはそれぞれ整数型で扱いますか?それとも文字型の配列にしますか? ・生年月日(20200803など) ・通し番号や数字のみのID ・電話番号 個人的には演算に使ったり、カウントしたりしないなら文字列かな?と思いますが、 ソートする可能性があるとしたらそれは数値にしておいたほうが無難ですよね…

C言語関連 | プログラミング40閲覧xmlns="http://www.w3.org/2000/svg">100

回答(3件)

1

日時についてはCならtmおよびtime_t型を使うのが柔軟性があるでしょう。 データとしては数値なのが数字のみなのがは大きな分岐点になります。 数値は計算に用いるものとして、例えば数量、金額、日数、幅、高さなどがあります。 IDはたとえ数字のみで構成されているとしても数値ではないし、例えば0001のような前に0が付加されて桁数が揃えられているものもあるので、一般的には文字列として扱った方が便利です。 連番はカウントアップされたりするので、数値が便利でしょう。 電話番号についは微妙なところですが、一般的には文字列型が多いと思います。 ソートについては確かに困ることがあるので、前記したようにIDとかなら前に0をつけるなどして桁揃えを行った方がいいです。

1人がナイス!しています

0

一般的なことを言うなら、C言語における文字型は1バイトの整数です。 short(2B)よりも小さな整数型として機能するので、一度試してみてください。 例えば「月」「日」を別個に扱う場合ではintではなくchar型の整数としてコンパクトに表現できるのです。

0

個人的には、数値にするだろうと思います。 エクセルのLEFT/MID/RIGHT関数に相当する関数が C言語には用意されていないので、 生年月日を年・月・日に分けたい場合、文字列だとちょっと手間です。 (関数を自作する必要があります) 数値にしておけば、/ と % を使って、 年・月・日を簡単に取り出せます。 #include <stdio.h> int main(void) { int date = 20200803, year, month, day; year = date / 10000; month = date / 100 % 100; day = date % 100; printf("%d年%02d月%02d日\n", year, month, day); return 0; } ↓ 2020年08月03日