2014-09-21 27 views
1

我寫的類C程序要求我們輸入日期日期MM/DD/YYYY作爲一個結構整數定義爲:Ç - 使用scanf函數(或任何其他函數)來獲得在INT

typedef struct date{ 

    int month; 
    int day; 
    int year; 

}Date; 

現在確實不會是一個問題,除非它只需要輸入爲mm/dd/yyyy。

我在想,如果也許我可以輸入它作爲一個字符串,只是使用一個循環將三個分隔成其他變量字符串,並將它們轉換爲int。

但後來我想起

printf("Enter Date (MM DD YYYY): "); 
scanf("%d %d %d",&...); 

是可能的。有沒有辦法一起「忽略」'/'?

回答

7
scanf("%d/%d/%d",&d,&m,&y); 

可能是你在找什麼。這將忽略/輸入

+0

謝謝。我會嘗試一下。 – 2014-09-21 07:00:03

0

在與POSIX strptime()或類似功能的系統,如果你先閱讀字符串表示爲str,然後你可以使用:

struct tm tm; 
strptime(str, "%m/%d/%Y", &tm); 

它轉化爲你的date如下:

date.year = tm.tm_year; 
date.month = tm.tm_mon; 
date.day = tm.tm_mday; 
+0

這似乎是OP請求的逆操作。 – 2014-09-21 08:01:38

+0

@JensGustedt:完全沒有,功能名稱中只有一個錯字,現在已經修復。 – 2014-09-21 09:08:50

+0

啊,我明白了。不幸的是,這不是標準C,而是POSIX擴展。 – 2014-09-21 09:52:22