【问题标题】:How to find the length of a number in C? [duplicate]如何在C中找到数字的长度? [复制]
【发布时间】:2014-05-24 01:32:30
【问题描述】:

下面的程序足以找到输入给定的任何字符串长度的长度,但是,我需要找到整数变量的长度,而不是字符串。

为此输入一个数字确实有效,但如果我将 s 扫描为 int 类型则无效。

int main()
{
   char s[1000];
   char i;
   int u=5;
   do
   {
       char s[1000];
       char i;
       int u=5;
       system("cls");
       printf("Enter a string: ");
       scanf("%s",s);
       for(i=0; s[i]!='\0'; ++i);

       printf("Length of string: %d",i);
       getch();
  }
 while(u==5);
getch();
}

所以我只需要修改这个小程序以接受整数变量,或者将计算的 int 变量转换为字符串。

有什么想法吗?

编辑:长度 = 字符数,所以 25 有 2,3456 有 4 等等

【问题讨论】:

  • 您是否有理由将数字输入为int(使用%d)。它不适合你作为字符串吗?

标签: c string file numbers integer


【解决方案1】:

要么使用itoa 将整数转换为字符串,然后使用您的代码计算长度,要么

int i;
for (i=0; num!=0; i++, num=num/10){}

应该给你i中数字的长度。

【讨论】:

  • 我认为itoa 不是标准功能,你不应该建议它。你可以更好地使用sprintf
【解决方案2】:

我想上面的例子也应该适用于整数。假设我的字符串是12345,那么我会得到 5 作为我的答案。

但是,你还能做的就是,输入一个整数,比如 i,然后执行以下操作。

while(i!=0){
  length++;
  i = i/10;
}

在这里,我认为 i 是一个整数变量,而不是一个字符数组。

【讨论】:

    【解决方案3】:

    您可以改用 math.h 中的 log10 和 ceil 函数。

    int length = (int)(number ? log10(number) + 1 : 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-11
      • 2012-03-28
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      相关资源
      最近更新 更多