将字符串转换为数字并返回字符串

时间:2010-12-24 06:54:06

标签: c string int

我有一个字符串,例如"23:0",这是一种小时格式。我需要将其转换为int,以便我可以为它添加时间。我有一个字符串"23:0"我需要添加6个小时"6:0"然后会给我"5:0",然后将其转换回字符串。

非常感谢任何想法:)


当我编写函数时,我在initiliazation中收到错误“无法将字符串转换为字符串*”我的函数看起来像这样:

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 个答案:

答案 0 :(得分:2)

由于字符串采用特定格式([小时]:[分钟]),因此您可以使用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);

答案 1 :(得分:0)

标准库中有这些简单任务的简单功能。查找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

干杯!

答案 2 :(得分:0)

听起来你需要一次完成一些事情(即使这听起来像是家庭作业)。最基本的例子是:

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

至少在这些方面的事情,写在我的头顶,所以提前道歉任何拼写错误/语法错误;