将int存储在C中的char数组中

时间:2015-11-12 16:06:49

标签: c int

我正在尝试将int值存储在char数组中,并再次访问它以便稍后检索值。这是我尝试过的,但它不起作用,因为我正在寻找。

char mem[50];
int* size = (int*)&mem[0];

char* isFree = (char*)&mem[4];

char *t = (char *)&mem[4];

现在我想根据订单在char数组中存储1234和'f'。 (在前5个字节内)

我不允许使用其他变量,必须使用char数组。

int a = 1234;
int *size = &a;

以上是不允许的。

3 个答案:

答案 0 :(得分:5)

您必须使用类型unsigned char来复制为您执行此操作的内存或memcpy。将char数组作为int的别名在C中未定义。

存储值:

int value = 1234;
memcpy( mem, &value, sizeof(value) );

检索值:

memcpy( &value, mem, sizeof(value) );

(数组mem必须足够大才能保存int类型。)

答案 1 :(得分:1)

您可以使用sprintf -

int size=1234;
char mem[50];
sprintf(mem,"%d",size);

注意 - 这将附加空终结符。

答案 2 :(得分:1)

我尝试了另一种方式,我得到了一个解决方案。我发布它作为其他人的帮助。

char mem[50];
int* size = (int*)&mem[0];
*size = 1234;

char* isFree = (char*)&mem[4];
*isFree = 'f';

char *t = (char *)&mem[4];

printf("%d\n",*(int*)&mem[0]);
printf("%c\n",*(char*)&mem[4]);

我指定了指针指针。我工作。谢谢大家回答。