C语言 在字符数组中存储多个整数

nbysray5  于 2023-01-20  发布在  其他
关注(0)|答案(5)|浏览(213)

我在网上找了几个小时才找到这个,但是还没有找到我真正需要的东西。我需要把多个整数放入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的值单独加起来了。有没有人能帮我算出来?

dfddblmv

dfddblmv1#

您可能需要使用snprintf。
char buf[32]; snprintf(buf, 32, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature);

ax6ht2ek

ax6ht2ek2#

这并不是一个真正的答案,因为你已经得到了。我张贴,以帮助您了解你尝试实际上做了什么。看第一个样本:

char* temp = (char)input.Z_pos_Camera_Temperature;

首先,当你编译这一行代码时,你应该得到一个警告,比如:
警告C4047:“正在初始化”:“char *”与“char”的间接级别不同
这是一个不好的指示,那么当这一行被执行时会发生什么呢?
如果input.Z_pos_Camera_Temperature的值为32,则通过强制转换为char将4字节整数截断为1字节,并分配给char* temptemp现在包含地址0x 00000020。
如果input.Z_pos_Camera_Temperature是450(也许相机在烤箱里?),该值将从0x 000001 C2截断为0xC 2,在赋值时进行符号扩展,并且'temp'现在将包含地址0xffffffC 2;
第二次尝试是相同的,只是在强制转换和赋值之前有整数加法:

char* temp = (char)450 + 32 + -5; // NOTE: the 32 here is the ASCII value for ' '
osh3o9ms

osh3o9ms3#

在C语言中,不能像在高级语言中那样使用+运算符将字符连接成一个字符串,也不能使用+运算符将多个字符串连接成一个更大的单独字符串。
但是,您可以使用函数snprintf构建字符串,如下所示:

char buffer[100]; // adjust per your needs
snprintf(buffer, 100, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature);
cyvaqqii

cyvaqqii4#

另一种选择是使用string.h库中的strcat函数。

ha5z0ras

ha5z0ras5#

你必须使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

Try online

相关问题