2012-01-23 286 views
2

我有一個數字需要與3個字符的字符串進行比較。 該數字不超過3位數字。INT填充零字符串

因此,例如,我需要比較3,300和13字符串像'003''300'和'013'。

我認爲比較最簡單的方法是如果我可以將字符串轉換爲字符串格式,然後使用strcmp將'003'與'003'進行比較。

我只是不確定如何確定需要填充多少個字符,特別是如何正確分配和轉換。

有什麼建議嗎?我想我可以檢查是否number - 100 < 0。如果是這樣,這意味着該數字需要被填充而不僅僅是轉換。我也可以做number - 10 < 0看看它的號碼是否像133。所以我可以確定填充零的確切數量,但是之後我就輸了。

感謝您的幫助!

回答

3

我認爲比較最簡單的方法是,如果我能得到整數 到他們的字符串格式,然後用STRCMP比較「003」到「003」

我認爲它會最容易使用strtoul並將字符串轉換爲整數。

3 == strtoul("003", NULL, 10); 
+0

所以「003」會正確變成3嗎?處理前導零是沒有問題的? ...閱讀手冊頁,不會認爲003是八進制嗎? – user974703

+0

@ user974703前導零不成問題。 – cnicutar

+0

太棒了,這似乎工作,謝謝! – user974703

3

對於公約的目的,讓我們叫你比較(int) num數量和字符串(char *) str

你可以使用s(n)printf轉儲數到字符串緩衝區和比較生成的字符串:

char str2[16]; 
snprintf(str2, sizeof(str2), "%03d", num); 
if (strcmp(str, str2) == 0) { ... } 

它可能會更容易只是字符串轉換爲整數和比較,雖然:

if (num == atoi(str)) { ... }