2013-03-06 88 views
0

所以即时通讯编写一个程序将二进制转换为十进制,我有一切正确的执行我没有得到正确的答案,因为我不知道如何获得输入的元素的数量进入阵列这是我的代码找到一个字符数组中的元素的数量

#include <stdio.h> 

int a=0; 

int main() 
{ 
    char bin[20]; 
    int i=0, len, r=0, w; 

    printf("Enter a Binary Number: "); 
    scanf("%s",bin); 
    printf("\n"); 

len = sizeof(bin); /*i know this is my problem how do i get len to be the size 
of the input of the user for example if the user puts 1010 len should be 4*/ 

    for(i = 0; i < len; i++) 
    { 
      r = r * 2 + (bin[i] == '1' ? 1 : 0); 
     } 

    printf("Decimal is: %d\n\n",r); 

return 0; 
} 
+0

数组和指针不知道他们是怎么长的。这就是为什么C风格的字符串在末尾有一个0来帮助区分它与任意字节数组的原因......您需要将其长度存储在别处,或使用抽象数据结构。 – Dmitry 2013-03-06 06:29:53

回答

1

在标题字符串中使用strlen函数。

#include<string> 

相反的sizeof(BIN)的,使用strlen功能

len = strlen(bin); 
+0

非常感谢你我已经尝试过strlen,但显然包含了错误的库(conio),我认为它非常感谢你 – Tatan1 2013-03-06 06:41:17

相关问题