无论如何,我可以将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”作为其值。
答案 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);
c
和d
是你的char和int。
但要小心缓冲区溢出。 H2CO3的答案显示了更安全的替代方案。