解析int变量

时间:2015-03-09 23:50:22

标签: c parsing int

我有一个填充了数字格式的int数组:

1160042
5900277
3200331
1001
1370022

有没有一种方法可以解析这些int而不先将它们转换为字符串?我希望使用00作为令牌,将之前的所有内容分配给一个临时变量,将00之后的所有内容分配给第二个临时变量

2 个答案:

答案 0 :(得分:1)

00是这些数字的自定义语义,位于10。 但是,由于机器在基础2上工作并且不知道所提供的数字中double 0的含义,您可能必须将其转换为字符串才能按照您描述的方式对其进行解析。

答案 1 :(得分:1)

#include <stdio.h>

void splitInt(int v, int *first, int *second){
    int pre = -1;
    int zeroCount = 0;
    int denomination = 10;
    int temp1, temp2;
    *first = *second = -1;//not found
    while(temp1 = v / denomination){
        temp2 = v % denomination;
        if(pre == temp2){
            if(++zeroCount==2){
                *first  = temp1;
                *second = temp2;
                return ;
            }
        } else {
            zeroCount = 0;
        }
        pre = temp2;
        denomination *= 10;
    }
}

int main(void) {
    int data[5] = {1160042, 5900277, 3200331, 1001, 1370022};
    int i, temp1, temp2;
    for(i = 0; i < 5; ++i){
        splitInt(data[i], &temp1, &temp2);
        printf("%d, %d\n", temp1, temp2);
    }
    return 0;
}