Как извлечь целые числа из строки? - PullRequest
0 голосов
/ 05 мая 2019
#include <stdio.h>

int convert_to_minutes(int h, int m) {
    int total_minutes;
    total_minutes = (h * 60) + m;
    return total_minutes;
}

int main(int argc, const char *argv[]) {
    //char duration[257];
    //scanf("%s", duration);

    int hours, minutes, total_minutes;
    scanf("%d:%d", &hours, &minutes);
    total_minutes = convert_to_minutes(hours, minutes);
    printf("\n%d\n0", total_minutes);

    return 0;
}

Как извлечь целые числа из строки? Если строка передается как HH:MM, как мне отсканировать первые 2 буквы строки и преобразовать в целое число, затем скопировать последние 2 буквы MM и преобразовать в целое число?

Testcases:

1) Вход: 13:05, Выход: 785

2) Вход: 00:00, Выход: 0

3) Вход: 00:42, Выход: 42

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Попробуйте использовать:

#include<stdio.h>

int main(){

    int hours=0,minutes=0,total_minutes=0;
    scanf("%d:%d",&hours,&minutes);

    total_minutes=(hours*60)+minutes;

    printf("%d",total_minutes);

    return 0;
    }

Формат ввода определенно будет ЧЧ: ММ, так что вы можете попробовать использовать:

scanf("%d:%d",&hours,&minutes);

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

1 голос
/ 05 мая 2019

Спасибо @Ely за рекомендацию использовать sscanf

#include <stdio.h>

// Function to convert to minutes
int convert_to_minutes(int h, int m) {
    int total_minutes;
    total_minutes = (h * 60) + m;
    return total_minutes; 
}

int main(int argc, const char *argv[]) {
    char duration[257];
    scanf("%s", duration);

    int hours, minutes, total_minutes;

    sscanf(duration, "%d:%d", &hours, &minutes);

    total_minutes = convert_to_minutes(hours, minutes);
    printf("\n%d\n", total_minutes);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...