c - 获取整数的位数

标签 c

  bool isValidId(int* id)
  {
        if(log10(*id) != 6)
        {
           return false;
        }

   return true;
  }


  printf("Enter ID: ");
  gets(input);
  c.id = atoi(input);
  validID= isValidId(c.id);
  if(!validID)
  {
     printf("Invalid ID format -(Use example 123456 format). \n");
  }

这就是它现在的样子。我要求用户输入一个 ID 并使用 isValidId 方法检查它是否有效,但是当我输入一个 ID 时我的程序崩溃了。请帮忙!谢谢

最佳答案

return *id >= 100000 && *id < 1000000;

我认为这可能是一个很好的解决方案,既易于阅读又高效。

如果只是判断是否是有效id,则不需要获取其长度

程序崩溃是因为isValidId的参数是指向int的指针,不是int,所以

validID = isValidId(c.id);

应该是

validID = isValidId(&c.id);

关于c - 获取整数的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171478/

相关文章:

c - C 中使用指针表示数组的各种方式

c - 有 ASM 到 C 的转换器吗?

c - 指向指针的指针,我迷路了

c - 在 while(1) 循环中等待用户输入

c - C的段错误

c - 指向结构的嵌套指针包含指向包含结构的指针?

c - 使用 select 和 accept 启动新的文件描述符

c - 使用指针重写 C 代码

c - 在c中编辑文本文件

c - cerf、cerfc、ctgamma 和 clgamma 函数的状态?