Как мне разбить длинное целое число на 3 набора символов? - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть длинная целочисленная переменная, которая содержит данные типа 20101201

Мне нужно разделить его на 2010, 12 и 01.

Примечание. Мне нужно сделать это в программе на моем компьютере с Linux.

Ответы [ 4 ]

5 голосов
/ 01 февраля 2011

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

(20101201/100/100)==2010

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

(20101201%100)==01

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

(20101201/100)%100==12
1 голос
/ 01 февраля 2011

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

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);
0 голосов
/ 01 февраля 2011

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

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

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

0 голосов
/ 01 февраля 2011

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

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);

}
...