2011-10-18 37 views

回答

1

如果字符串的月份部分的第一個字符是'0',則第二個字符必須在'1'和'9'之間,包括在內纔是有效的。如果第一個字符是'1',則第二個字符必須介於'0'和'2'之間纔有效。任何其他初始字符都是無效的。

在代碼

bool valid_month (const char * yyyymm) { 
    return ((yyymm[4] == '0') && (yyymm[5] >= '1') && (yyymm[5] <= '9')) || 
     ((yyymm[4] == '1') && (yyymm[5] >= '0') && (yyymm[5] <= '2')); 
} 
+0

感謝David和Lou。這很有幫助! – user1001939

+0

除了錯字和假設的有效範圍,這是正確的想法。 – AJG85

0

你可以做串的的atoi(),或者你可以簡單地比較的ASCII值。例如:

if (buf[4] == '0') 
{ 
    // check buf[5] for values between '1' and '9' 
} 
else if (buf[4] == '1') 
{ 
    // check buf[5] for values between '0' and '2' 
} 
else 
{ 
    // error 
} 

無論哪種方式都是可以接受的。我想這實際上取決於你將如何最終存儲信息(如int或字符串)。

-1

假設你的char *變量稱爲「PSTR」和MM後空終止,你可以這樣做:

int iMon = atoi(pstr + 4); 
if ((iMon >= 1) && (iMon <= 12)) 
{ 
    // Month is valid 
} 
+0

-1:這種方法會說''20111Z「'和'」19999#「'是有效的。 –