scanf中的右对齐宽度修改器?

时间:2012-09-11 04:14:55

标签: c scanf

对于赋值,其中一小部分表示整数必须只有五位数。如果输入一个整数,如1234567,则结果应为34567。

有什么方法可以直接用scanf设置吗?当然,将其设置为只读取五个整数很容易,但它不会读取最右边的五个。是否有可以为此设置的标志或其他东西,或者之后我是否必须做一些hackish循环?

3 个答案:

答案 0 :(得分: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 :(得分: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);

答案 2 :(得分:0)

没有这样的预定义量词可以拥有最正确的数字。你必须编写自己的循环来显示你想要的输出。