我有一个填充了数字格式的int数组:
1160042
5900277
3200331
1001
1370022
有没有一种方法可以解析这些int而不先将它们转换为字符串?我希望使用00作为令牌,将之前的所有内容分配给一个临时变量,将00之后的所有内容分配给第二个临时变量
答案 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;
}