在char数组中存储多个整数

时间:2017-06-08 15:50:33

标签: c arrays string char int

我一直在网上找几个小时找到这个,但还没找到任何东西,这正是我需要的。我需要将多个整数放入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;

但这只是单独添加了三个字符的值。有人可以帮我解决这个问题吗?

5 个答案:

答案 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* temptemp现在包含地址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

Try online