Kochan's Programming in C に取り組んでいます。これは演習 9-5 です。プログラムは時間を 1 秒ずつ増やします。コードは正常にコンパイルされますが、時刻が期待どおりに更新されません。timeUpdate 関数のコードを次のように置き換えると、
printf("Test");
「Test」と出力されるため、関数の呼び出しに問題があるようには見えません。ただし、コードを次のように置き換えると
now.seconds = 2;
または何か、秒が 2 に更新されていません。コードのデバッグを手伝ってください。本当に明らかな間違いを犯している場合は、お詫び申し上げます。残念ながら、私は本当に初心者です。
#include <stdio.h>
struct dateAndTime
{
int days;
int hours;
int minutes;
int seconds;
};
// Updates the time by one second
struct dateAndTime timeUpdate(struct dateAndTime now)
{
now.seconds++;
if (now.seconds == 60) // One minute
{
now.seconds = 0;
now.minutes++;
if (now.minutes == 60) // One hour
{
now.minutes = 0;
now.hours++;
}
}
return now;
}
// Increments days by one when hours reaches 24
struct dateAndTime dateUpdate(struct dateAndTime now)
{
now.days++;
now.hours = 0;
return now;
}
// Calls timeUpdate to increment time by one second
struct dateAndTime clockKeeper(struct dateAndTime now)
{
timeUpdate(now);
// If hours reaches 24, increments dys by one
if (now.hours == 24)
{
dateUpdate(now);
}
return now;
}
int main(void)
{
struct dateAndTime clockKeeper(struct dateAndTime now);
struct dateAndTime present, future;
// Prompts and accepts user input
printf("Enter a time (dd:hh:mm:ss): ");
scanf("%i:%i:%i:%i", &present.days, &present.hours,
&present.minutes, &present.seconds);
future = clockKeeper(present);
// Prints updated time
printf("The updated time is: %.2i:%.2i:%.2i:%.2i\n", future.days, future.hours,
future.minutes, future.seconds);
return 0;
}