這是我計算年齡的程序。printf後打印的額外數字
#include <stdio.h>
#include <time.h>
int main(void) {
int d1, d2, m1, m2, y1, y2, d3, m3, y3;
struct tm *t;
time_t ts;
ts = time(NULL);
t = localtime(&ts);
printf ("\n Enter date of birth (dd-mm-yyyy) : ");
scanf ("%2d-%2d-%4d",&d1,&m1,&y1);
d2 = t->tm_mday;
m2 = t->tm_mon + 1;
y2 = t->tm_year + 1900;
printf ("\n Current Date : %d-%d-%d\n",d2,m2,y2); //Problem on this line
d3 = d2 - d1;
m3 = m2 - m1;
y3 = y2 - y1;
printf ("%d%d%d",d3,m3,y3);
if (d3 < 0){
d3 += 30;
m3 -= 1;
}
if (m3 < 0){
m3 = 12 + m3;
y3 = y3 - 1;
}
printf ("\n You Are %d Year(s) %d Month(s) %d Day(s) Old",y3,m3,d3);
return 0;
}
問題出現在打印當前日期的第14行。我輸入16-10-2000作爲輸入,每次運行程序時,我都會在第14行的換行符後面得到這個數字「10-817」。如果我改變了輸入,這個數字就會改變。爲什麼在運行我的程序後打印此額外數字,我該如何解決?
SO不是一個調試服務。編譯符號,在調試器中運行代碼,逐行跟蹤程序,檢查相關變量的值,以瞭解真正發生的事情。如果出現*特定*問題,請隨時返回此處。 – alk