从char和int创建char *

时间:2012-12-21 17:48:51

标签: c char

无论如何,我可以将char和int结合起来并将其变成C中的char *吗?

总会只有一个char和一个4位int。

例如: 我有一个字母“A”,我有一个int 1234。 如何将它们组合成一个char *,指向带有“A1234”的char数组?

CID[0] = character 
CID[1] = ID & 0xff;
CID[2] = (ID >> 8) & 0xff;
CID[3] = (ID >> 16) & 0xff;
CID[4] = (ID >> 24) & 0xff;

假设character是一个正确的char,其中“A”作为其值,而ID是一个正确的int,其中“1234”作为其值。

4 个答案:

答案 0 :(得分:9)

基本字符串格式:

char buf[32];
snprintf(buf, sizeof(buf), "%c%d", 'A', 1234);

答案 1 :(得分:3)

使用sprintf / snprintf个函数。

sprintf的示例:

char *a = malloc(32);  // allocate enough memory and check malloc's return value 
sprintf(a, "%c%d", my_char, my_int);

答案 2 :(得分:2)

复制您在问题中所写的内容并远离s(n)printf问题:

CID[0] = character 
CID[1] = ID / 1000;
CID[2] = (ID / 100) % 10;
CID[3] = (ID / 10) % 100;
CID[4] = ID % 10;

如果您的编译器足够智能并且您的处理器具有良好的分频器单元,那么它肯定比调用sprintf更快。

编辑:对编译器智能和分频器优点有一点澄清。编译器通常能够使用常量将乘法和除法转换为替代代码,使用移位,加法,减法和避免分割指令,即使在最快的处理器中仍然需要一些时间。 此处显示的显式转换也将在sprintf内进行(尽管更通用)。

答案 3 :(得分:1)

#include <stdio.h>

buf [SIZE];
sprintf(buf, "%c%d", c, d);

cd是你的char和int。

但要小心缓冲区溢出。 H2CO3的答案显示了更安全的替代方案。