Bod*_*sko 9 c arrays int casting char
是否可以使用强制转换将C转换为C中的"string"?没有任何功能,如atoi()或sprintf()?
我想要的是这样的:
int main(int argc, char *argv[]) {
int i = 500;
char c[4];
c = (char)i;
i = 0;
i = (int)c;
}
Run Code Online (Sandbox Code Playgroud)
原因是我需要生成两个随机整数(0到500)并将两个作为消息队列中的一个字符串发送到另一个进程.另一个进程接收消息并执行LCM.
我知道怎么做atoi()和itoa().但是我的老师想要使用演员.
另外,为什么不能编译以下内容?
typedef struct
{
int x;
int y;
} int_t;
typedef struct
{
char x[sizeof(int)];
char y[sizeof(int)];
} char_t;
int main(int argc, char *argv[])
{
int_t rand_int;
char_t rand_char;
rand_int.x = (rand() % 501);
rand_int.y = (rand() % 501);
rand_char = (char_t)rand_int;
}
Run Code Online (Sandbox Code Playgroud)
R..*_*R.. 11
当然这是不可能的,因为数组是一个对象并需要存储.强制转换会产生值,而不是对象.有人会说C的全部意义/权力是你可以控制对象的存储和生命周期.
生成包含整数的十进制表示的字符串的正确方法是自己为它创建存储并使用snprintf:
char buf[sizeof(int)*3+2];
snprintf(buf, sizeof buf, "%d", n);
Run Code Online (Sandbox Code Playgroud)
你必须转换500为"500".
"500"'5'和那时'0'然后'0'然后一样0。最后一个元素0是字符串的空终止符。
500等于5 * 100 + 0 * 10 + 0 * 1. 你必须在这里做一些数学计算。基本上你必须使用/运算符。
那么这也可能有用:'5'与 相同'0' + 5。
| 归档时间: |
|
| 查看次数: |
62182 次 |
| 最近记录: |