【发布时间】:2017-11-14 12:05:44
【问题描述】:
我有两个整数,我想将它们组合成一个字符串 以下方式:例如,给定
xx=555,yy=3,我希望字符串为: “555-03”。yy中的值在我的情况下类似于小时,因此它必须包含 两位数,但天数没关系,有区别 在“555-03”和“555-3”之间。有什么想法我可以做类似的事情 这个?
这基本上我得到以下错误:函数返回局部变量的地址 [-Wreturn-local-addr] 我的尝试:
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
static char* intToTimeDate(int day,int hour);
int main()
{
int hour=5555;
int curr_day=7;
char* curr_time=intToTimeDate(curr_day,hour);
printf("dd=%s",curr_time);
return 0;
}
static char* intToTimeDate(int day,int hour){
char str[16];
snprintf ( str, sizeof ( str) - 1, "%d-%02d", day,hour);
printf("str=%s",str);
return str;
}
【问题讨论】:
-
首先检查
printf的工作原理:cplusplus.com/reference/cstdio/printf。sprintf做同样的事情,但将输出写入给定的字符串。 -
您没有使用过any of the
printffunctions 在一次调用中打印出多个值吗?格式字符串中可以有很多格式规范。 -
你需要一个数组,而不是指向无处的指针,来调用
sprintf()。使用char str[32];就可以了。必要时,您可以使用%02d或%.2d获取前导零的两位数。有一部分情况可以说%.2d表示法更好,但它有点脆弱。 -
返回 str 是非法的。它是一个局部变量,你需要 malloc 一个字符串来返回
-
这是一个编码研讨会吗?问题不应该是“移动目标”。