如何计算数字中的数字,包括前导零?

时间:2017-03-01 21:53:04

标签: c scanf

此代码尝试计算输入数字中的数字。

如果输入的数字是06584,则此代码的输出将为4,不包括零。如何将5作为输出(因此计算零)?

#include<stdio.h>
void main()
{
    int n,c=0,d;
    printf("Enter no\n");
    scanf("%d",&n);
    while(n!=0)
    {
        d=n%10;
        c++;
        n=n/10;
    }
    printf("No of digits=>%d\n",c);
}

2 个答案:

答案 0 :(得分:3)

  

如何计算数字中的数字,包括前导零?

要计算输入的位数,包括前导0位,请记录数字前后的扫描偏移量。此方法将符号字符报告为数字,但不计算前导空格。

使用"%n"记录到目前为止扫描的字符数。 @BLUEPIXY

#include<stdio.h>

int main() {
  int begin;
  int after = 0;
  int number;
  printf("Enter number\n");
  fflush(stdout);
  //     +--- consumes leading white-space
  //     | +- record number of characters scanned
  scanf(" %n%d%n", &begin, &number, &after);
  if (after > 0) {
    printf("No of digits: %d\n", after - begin);
    printf("Value read  : %d\n", number);
  } else {
    puts("Invalid input");
  }
}

输出

Enter number
  000123
No of digits: 6
Value read  : 123

答案 1 :(得分:0)

#include<stdio.h>
#include <string.h>
int main()
{
    char n[101];
    printf("Enter no\n");
    scanf("%100s",n);
    printf("No of digits=>%d\n",strlen(n));
}