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

C 如何计算数字中的数字,包括前导零?,c,scanf,C,Scanf,此代码尝试计算输入数字中的位数 如果输入编号为06584,则此代码的输出将为4,不包括零。如何将5作为输出(因此计算零) #包括 void main() { int n,c=0,d; printf(“输入否”); scanf(“%d”和“&n”); 而(n!=0) { d=n%10; C++; n=n/10; } printf(“位数=>%d\n”,c); } #包括 #包括 int main() { charn[101]; printf(“输入否”); 扫描频率(“%100s”,n); pri

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

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

#包括
void main()
{
int n,c=0,d;
printf(“输入否”);
scanf(“%d”和“&n”);
而(n!=0)
{
d=n%10;
C++;
n=n/10;
}
printf(“位数=>%d\n”,c);
}
#包括
#包括
int main()
{
charn[101];
printf(“输入否”);
扫描频率(“%100s”,n);
printf(“位数=>%d\n”,strlen(n));
}
如何计算数字中的数字,包括前导零

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

使用
“%n”
记录到目前为止扫描的字符数


没有数学解决方案能够检测到前导零。您必须以字符串形式读取用户输入,并获取字符串长度。您应该在输入之前添加
printf
of n,而您将看到前导0(s)已消失
char n[100];scanf(“%s”,n);c=strlen(n)。这将为您提供假设输入有效的位数。要验证它是否确实是一个数字,请使用
strtol
。对于像
“-123”
这样的负输入,使用
%n
,应该报告3还是4?
#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);
}
#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));
}
#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