2012-09-11 16 views
1

對於賦值,它的一小部分表示整數只能是五位數字。如果輸入整數如1234567,那麼結果應該是34567.scanf中的右對齊寬度修飾符?

有沒有什麼方法可以直接用scanf設置?當然,將它設置爲僅讀取五個整數很容易,但它不會讀取最右邊的五個整數。有沒有一個標誌或一些可以爲此設置的東西,還是我必須做一些後來的hackish循環?

回答

1

你可以使用mod運算符。 int m = enteredNumber % 100000;這會截斷你的號碼。

這裏..我試過了。

#include <math.h> 

int main(int argc, char** argv) 
{ 
    char* number = "12334567"; 

    int numberAsInt = atoi(number); 

    int shorterNumber = numberAsInt % 100000; 

    printf("The number is %d\n", shorterNumber); 

    return 0; 
} 
+1

如果輸入七位數字,則不起作用 - 我試過了。或者它正在工作......很奇怪? – user1661781

0

也許這樣

char* number = "1234567"; 
int val = 0; 
int len = 0; 
int ofset = 0; 

len = strlen(number); 
if (len > 5) { 
    ofset = len - 5; 
} 
sscanf(number + ofset, "%d", &val); 
printf("result: %d", val); 
0

沒有這樣的預定義的量詞擁有最右邊的數字。你必須編寫自己的循環來顯示你想要的輸出。