2015-03-09 2 views
-1

У меня есть целочисленный массив заполняется с номерами формата:разбор INT переменной

1160042 
5900277 
3200331 
1001 
1370022 

Есть ли способ, что я могу разобрать этот Интс без их преобразований в строку в первую очередь? Я хочу использовать 00 как токен, назначая все до него одной временной переменной и все после 00 до второй временной переменной

+0

Используйте 'getchar()' и проанализируйте его байтом вручную. – HolyBlackCat

+1

Что это значит даже для «разбора» числа, не выбирая из него строку. Вы имеете в виду, есть ли способ математически найти нулевые цифры и то, что до и после них? Если да, то да, есть способ сделать это. Думайте '% 10'. –

+0

Это именно то, что я имею в виду. Спасибо – armorlord

ответ

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; 
} 
1

00 - это специальная семантика для этих чисел и находится в базе 10. Однако , поскольку машина работает на базе 2 и не знает значения double 0 в предоставленных числах, вам, вероятно, придется преобразовать ее в строку, чтобы проанализировать ее так, как вы описали.

Смежные вопросы