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

scanf中的右对齐宽度修改器?,c,scanf,C,Scanf,对于赋值,它的一小部分表示整数长度必须只有五位数。如果输入一个整数,如1234567,则结果应为34567 有什么方法可以直接用scanf设置吗?当然,将其设置为只读取五个整数很容易,但它不会读取最右边的五个整数。是否有可以为此设置的标志或其他内容,或者我必须在之后执行一些黑客循环?您可以使用mod操作符整数m=输入的数字%100000这将截断您的号码 这里。。我试过了 #include <math.h> int main(int argc, char** argv) { ch

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


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

您可以使用mod操作符<代码>整数m=输入的数字%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;
}
#包括
int main(int argc,字符**argv)
{
char*number=“12334567”;
int numberAsInt=atoi(数字);
int shorterNumber=numberAsInt%100000;
printf(“数字是%d\n”,缩写数字);
返回0;
}

您可以使用mod运算符<代码>整数m=输入的数字%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;
}
#包括
int main(int argc,字符**argv)
{
char*number=“12334567”;
int numberAsInt=atoi(数字);
int shorterNumber=numberAsInt%100000;
printf(“数字是%d\n”,缩写数字);
返回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);
也许像这样

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);

没有这样的预定义量词具有最右边的数字。您必须编写自己的循环来显示所需的输出。

没有这样的预定义量词可以包含最右边的数字。您必须编写自己的循环来显示所需的输出。

如果它们输入七位数字,则不起作用——我已经尝试过了。或者它正在工作。。。。奇怪?如果他们输入七位数就不行了——我已经试过了。或者它正在工作。。。。奇怪的