我在网上找了几个小时才找到这个,但是还没有找到我真正需要的东西。我需要把多个整数放入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;
但是那只是把三个char的值单独加起来了。有没有人能帮我算出来?
5条答案
按热度按时间dfddblmv1#
您可能需要使用snprintf。
char buf[32]; snprintf(buf, 32, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature);
ax6ht2ek2#
这并不是一个真正的答案,因为你已经得到了。我张贴,以帮助您了解你尝试实际上做了什么。看第一个样本:
首先,当你编译这一行代码时,你应该得到一个警告,比如:
警告C4047:“正在初始化”:“char *”与“char”的间接级别不同
这是一个不好的指示,那么当这一行被执行时会发生什么呢?
如果
input.Z_pos_Camera_Temperature
的值为32,则通过强制转换为char将4字节整数截断为1字节,并分配给char* temp
。temp
现在包含地址0x 00000020。如果
input.Z_pos_Camera_Temperature
是450(也许相机在烤箱里?),该值将从0x 000001 C2截断为0xC 2,在赋值时进行符号扩展,并且'temp'现在将包含地址0xffffffC 2;第二次尝试是相同的,只是在强制转换和赋值之前有整数加法:
osh3o9ms3#
在C语言中,不能像在高级语言中那样使用
+
运算符将字符连接成一个字符串,也不能使用+
运算符将多个字符串连接成一个更大的单独字符串。但是,您可以使用函数
snprintf
构建字符串,如下所示:cyvaqqii4#
另一种选择是使用string.h库中的strcat函数。
ha5z0ras5#
你必须使
char*
足够大,以便能够存储所有的数字,然后你可以使用类似下面的代码将数字转换成字符串:Try online