dポイントプレゼントキャンペーン実施中!

C言語についてです!
同じ年の、年月日Aと年月日Bを入力して、その間の経過日数を計算したいのですが(A=Bのケースでは経過日数をゼロ)、A>Bの時は経過日数をマイナスにして表したいです。
AとBは同じ年として、西暦2000年以後の年月と仮定してます。

つまり例をあげますと
『2020/4/9 2020/6/15 』とデバック画面(?)で入力したら実行の結果、経過日数は「67」と出し、
『2020/3/1 2020/2/26』と入力したら経過日数は「-3」と出したいのです。
『』の中は自分で選んだ年月日を入力できるようにしたいです。

どなたかこのプログラムをかける方がいらっしゃたら教えてください<(_ _)>

A 回答 (1件)

#include <time.h>


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
 char s[19];
 char* sep = " /";
 long num_data[6];
 scanf("%18[^\n]%*[^\n]", s);
 getchar();
 num_data[0] = strtol(strtok(s, sep), NULL, 10);
 for (int i = 1; i < 6; i++) {
  num_data[i] = strtol(strtok(NULL, sep), NULL, 10);
 }
 struct tm tmTime0 = {0};
 tmTime0.tm_year = num_data[0] - 1900;
 tmTime0.tm_mon = num_data[1] - 1;
 tmTime0.tm_mday = num_data[2];
 struct tm tmTime1 = {0};
 tmTime1.tm_year = num_data[3] - 1900;
 tmTime1.tm_mon = num_data[4] - 1;
 tmTime1.tm_mday = num_data[5];
 time_t t0 = mktime(&tmTime0);
 time_t t1 = mktime(&tmTime1);
 printf("%d\n", (int)difftime(t1, t0)/60/60/24);
 return EXIT_SUCCESS;
}
    • good
    • 1
この回答へのお礼

あなたに会えてよかった

さっきはちゃんと叱ってくれてありがとうございました。ごめんなさい、そうですよね、せっかく回答してくださったのにまた他で質問するなんて今考えたらすごく失礼なことだなって思いました。自分がやられたらすごく悲しいですね。
前のはちゃんと消しました。
それと、すぐに回答してくださって本当にありがとうございました。あなたのを参考にしつつ自分なりに工夫してもう1回作ってみようと思います!!

お礼日時:2021/12/01 17:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!