编辑代码

#include <stdio.h>
#include <string.h>
//len长的01串转成十进制
int b_to_d(char *str, int len)
{
    int result=0;
    for(int i=0;i<len;i++)
    {
        result = (result<<1) | (str[i] - '0');//空出的低位0自会和读取的01串的对应位去或运算
        //最后得到的就是十进制数
    }
    return result;
}

int main () {
    char s[1024];
    scanf("%s",s);//输入一个01串

    int len = strlen(s);//串长
    int pos=0;//记录点
    int seg_len=1;//取出的子串长

    while(pos+seg_len<=len) //剩余串长不足以形成seg_len长子串
    {
        int value=b_to_d(&s[pos] , seg_len); //子串转10进制
        printf("%d\n", value);
        pos +=seg_len; //记录点更新
        seg_len++;//取出子串长更新
        if(seg_len>10)
        {
            seg_len=1;//取出子串长在1-10内循环
        }
    }
    printf("\n");
}