Преобразование строки в число и обратно в строку - PullRequest
1 голос
/ 24 декабря 2010

У меня есть строка, например "23:0", которая является часовым форматом.Мне нужно преобразовать это в int, чтобы я мог добавить время к нему, например.У меня есть строка "23:0" Мне нужно добавить 6 часов, которые будут "6:0", которые затем дадут мне "5:0", а затем преобразовать это обратно в строку.

Любые идеи будут высоко оценены:)


Когда я пишу свою функцию, я получаю сообщение об ошибке "не могу преобразовать 'строку в char *' при инициализации", моя функция выглядит так:

int convert(String x){
    char *str = x;
    int hour; int minute;
    sscanf(str, "%d:%d", &hour, &minute);
    return hour;
}
convert(time) //time is a String for example 23:0

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

Поскольку строка имеет определенный формат ([час]: [мин]), вы можете использовать sscanf() для сканирования строки. Поскольку строка находится в ожидаемом формате, это будет проще всего сделать. В противном случае вы бы использовали другие методы, описанные всеми остальными.

char *str = "23:0";
int hour, min;
sscanf(str, "%d:%d", &hour, &min);
/* hour = 23
   min  = 0
*/

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

char buf[100];
hour = (hour + 6) % 24;
snprintf(buf, 100, "%d:%d", hour, min);
0 голосов
/ 24 декабря 2010

Похоже, вам нужно сделать несколько вещей одновременно (даже если это действительно похоже на домашнее задание).Самым базовым примером будет:

char *x = "23.0";
char *y = "6.0";
float result = atof(x) + atof(y);
float result_24h = result % 24; // Modulo to get remainer only
char result_str[32]; // bad bad form, but good enough for this example
sprintf(result_str,"%f",result_24h);

По крайней мере, что-то в этом духе, написанное на макушке, поэтому заранее извиняюсь за любые опечатки / синтаксические ошибки;

0 голосов
/ 24 декабря 2010

В стандартной библиотеке есть простые функции для этих простых задач. Посмотрите atoi() и atof() для преобразования строки в число и sprintf() для числа в строку.

Редактировать : пример. Код:

#include <stdlib.h>
#include <stdio.h>

int main() {

 char string[10];
 int n1, n2, result;

 n1 = atoi("23");
 n2 = 6;

 result = (n1 + n2) % 24;

 sprintf(string, "%d", result);
 printf("Result: %s\n", string);

 return 0;
}

стандартный вывод:

Result: 5

Ура!

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