必须有一个更简单的方法来做到这一点。我要做的是将一组int和float转换成一个char,然后将它们组合成一个char。它没有按预期构建字符串str。
用C。

char *str_W1;
char *str_W2;
char *str_W3;
char *str_W4;
char *str_W5;
char *str_W6;
char *str_VBAT;
char *str_day;
char *str_month;
char *str_year;
char *str_hour;
char *str_minute;

sprintf(str_day, "%d", time.day);       //casting int to string
sprintf(str_month, "%d", time.month);   //casting int to string
sprintf(str_year, "%d", time.year);     //casting int to string
sprintf(str_hour, "%d", time.hour);     //casting int to string
sprintf(str_minute, "%d", time.minute); //casting int to string
sprintf(str_W1, "%.2f", value_w1);      //casting float to string
sprintf(str_W2, "%.2f", value_w2);      //casting float to string
sprintf(str_W3, "%.2f", value_w3);      //casting float to string
sprintf(str_W4, "%.2f", value_w4);      //casting float to string
sprintf(str_W5, "%.2f", value_w5);      //casting float to string
sprintf(str_W6, "%.2f", value_w6);      //casting float to string
sprintf(str_VBAT, "%.2f", value_vbat);  //casting float to string

char *str;
/* Building One String */
strcpy (str, str_day );
strcat (str, "/");
strcat (str, str_month);
strcat (str, "/");
strcat (str, str_year);
strcat (str, ",");
strcat (str, str_hour);
strcat (str, ":");
strcat (str, str_minute);
strcat (str, ",");
strcat (str, str_W1);
strcat (str, ",");
strcat (str, str_W2);
strcat (str, ",");
strcat (str, str_W3);
strcat (str, ",");
strcat (str, str_W4);
strcat (str, ",");
strcat (str, str_W5);
strcat (str, ",");
strcat (str, str_W6);
strcat (str, ",");
strcat (str, str_VBAT);

最佳答案

您可以对多个格式字符使用sprintf(或更好的snprintf)。这就不需要strcpystrcat另外,不要忘记为字符串实际分配一个数组。如果要生成一个小字符串,可以预先分配一个固定大小的数组,并用如下代码填充它:

char s[256];
snprintf(s, sizeof s, "%d/%d/%d,%d:%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
         time.day, time.month, time.year, time.hour, time.minute,
         value_w1, value_w2, value_w3, value_w4, value_w5, value_w6,
         value_vbat);

// proceed working with s

07-24 09:46
查看更多