2011-02-01 5 views
0

У меня есть длинный длинный целочисленную переменную, которая хранит данные, такие как 20101201Как разделить длинное длинное целое на 3 набора символов?

мне нужно разбить его, как 2010, 12 и 01.

Примечание: Мне нужно сделать это в программе на моей Linux-машине.

+0

Это не ясно, будет ли вы используете длинные длинное целое (как вы говорите) или строку (например, кавычки и тег предполагает), чтобы сохранить это большое количество ... – Dave

+0

@ Dave - Я получаю длинное целое значение и нужно сохранить его в виде трех разных строк. – Thi

+0

Хорошо, я отвечу в ответ ... – Dave

ответ

5

можно разделить по степеням 10, чтобы избавиться от цифр справа:

(20101201/100/100)==2010 

И по модулю полномочий 10, чтобы избавиться от числа слева:

(20101201%100)==01 

И объедините их, чтобы получить деталь посередине:

(20101201/100)%100==12 
0

Для примера, который вы указали, вы хотели разделить число в три набора: Передайте свой ввод в качестве аргумента исполняемому файлу.

int main(int argc, char **argv) 
{ 

long long int x; 

x=atoll(argv[1]); 

printf("\n %d", x%100); 
x=x/100; 

printf("\n %d", x%100); 
x=x/100; 
printf("\n %d", x); 

} 
+0

Такая же проблема..atoi не может обрабатывать long long int, и результат не был преобразован в строку. – Terminal

0

Попробуйте что-то вроде:

#include <stdlib.h> // for itoa() call -- built in to convert integer to string 
#include <stdio.h> // for printf() call 

int main() { 
    int num = 123; 
    char buf[5]; 

    // convert 123 to string [buf] 
    itoa(num, buf, 10); 

    // print our string 
    printf("%s\n", buf); 

    return 0; 
} 

Тогда вы можете просто завершить свою программу, используя индекс, чтобы разделить число на разные строки.

+1

Я думаю, что itoa() будет принимать только int int long long int? – Thi

1

Это должно быть хорошо с длинными, и помещает ответы в строки.

long long int lWholeThing = 20101201LL; 
long long int lDate = lWholeThing % 100LL; 
lWholeThing /= 100LL; 
long long int lMonth = lWholeThing % 100LL; 
lWholeThing /= 100LL; 
long long int lYear = lWholeThing; 

char sDate [3]; 
char sMonth [3]; 
char sYear [5]; 

sprintf (sDate, "%02d", (int) lDate); 
sprintf (sMonth, "%02d", (int) lMonth); 
sprintf (sYear, "%d", (int) lYear); 
Смежные вопросы