我一直在网上找几个小时找到这个,但还没找到任何东西,这正是我需要的。我需要将多个整数放入char*
(用空格分隔),以便稍后写入.txt文件。我迄今为止最好的尝试是:
char* temp = (char)input.Z_pos_Camera_Temperature;
其中input.Z_pos_Camera_Temperature是结构的成员。我试过了
char* temp = (char)input.Z_pos_Camera_Temperature + ' ' + input.Z_neg_Camera_Temperature;
但这只是单独添加了三个字符的值。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
在C中,您不能像使用ng build
运算符那样将字符串联到字符串中,就像在更高级别的语言中一样,也不能使用+
运算符将多个字符串连接成更大的单独字符串。
但是,您可以使用函数+
来构建字符串,如下所示:
sprintf
答案 1 :(得分:2)
您可能想要使用snprintf。
char buffer[100]; // adjust per your needs
sprintf(buffer, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature);
答案 2 :(得分:2)
这并不是一个真正意图的答案,因为你已经有了这个答案。我发帖是为了帮助您了解您尝试过的实际操作。看第一个样本:
char* temp = (char)input.Z_pos_Camera_Temperature;
首先,编译此行时应该收到警告。类似的东西:
警告C4047:'初始化':' char *'间接级别与' char'
不同
这表明事情正在发生。那么当这一行被执行时会发生什么?
如果input.Z_pos_Camera_Temperature
的值为32,那么将4字节整数截断为1字节,由强制转换为char并分配给char* temp
。 temp
现在包含地址0x00000020。
如果input.Z_pos_Camera_Temperature
是450(可能是摄像机在烤箱中?),则该值将被截断为0x000001C2至0xC2,分配后符号扩展,以及“temp'现在将包含地址0xffffffC2;
第二次尝试是相同的,除了在强制转换和赋值之前有整数加法:
char* temp = (char)450 + 32 + -5; // NOTE: the 32 here is the ASCII value for ' '
答案 3 :(得分:1)
另一种选择是使用string.h lib中的strcat函数。
答案 4 :(得分:0)
您必须使char*
足够大才能存储所有数字。
然后,您可以使用以下内容将数字转换为字符串:
int n[10] = {1, 2, 3, 4, 5888, 6, 7, 8, 9, 10};
char final[1000]; //adjust to acoomodate all the digits and spaces
int len = 0;
for (int i = 0; i < 10; i++) {
char str[64];
sprintf(str, "%d", n[i]);
strcpy(final + len, str); //copy the ith number
len += strlen(str); //take a note of the number of digits used
final[len] = ' '; //add a space
len++;
}
final[len] = '\0'; //terminate the string