有个数据太长了,怎么改

读入一个以1开头的二进制序列,请将其转换成十进制数输出。(用循环解决,不能使用数组和函数)
输入格式:
若干行,每行代表一组数据,是一串二进制数的1-0序列,最多不超过30位。所有数据只由1、0和回车组成,不包含任何其它空白字符。
输出格式:
依次输出每组数据转换成的十进制数,每个输出结果单独占一行。
输入样例:
1001
1000000000000000000000000000000
11110011
11110111
11111111
101
1
输出样例:
9
1073741824
243
247
255
5

#include
#include
int main()
{
    unsigned long long n,i=0,sum=0,net;
    while(scanf("%lld",&n)!=EOF)
    {
        sum=0;
        i=0;
        while(n>0)
       {
          net=n%10;
          sum+=net*pow(2,i);
          n/=10;
          i++;
       }
       printf("%lld\n",sum);
    }
    return 0;
}

数据长了,用字符数组接收