我需要输入
int a= 254321;
然后,
a
中的值需要放在新变量中,例如
char b = {21,43,25};
我们该怎么做?
答案 0 :(得分:3)
使用模块和分区。
int main(void)
{
int a = 254321;
int b[5] = {0};
int i;
for (i = 0; a ;i++) {
b[i] = a % 100;
a = a /100;
}
}
答案 1 :(得分:2)
正如@M.M所述,/
和%
运营商是您的朋友。通过使用它们,您可以编写如下函数:
#define SPLITTER 100
/* ensure the the value of SPLITTER is not too big for parts to fit into char */
#if SPLITTER > 256
#error value of SPLITTER is to big for type char
#endif
int split(int value, char *parts, int len)
{
int count = -1; /* assume error */
if ((parts) && (len > 0)) /* valid input? */
{
count = 0; /* ok, we have valid input */
while (value != 0)
{
if (count < len) /* ensure not to exceed size of parts! */
{
parts[count] = value % SPLITTER;
}
value /= SPLITTER;
count++;
}
}
return (count);
}
此功能将value
拆分为最大&#34;尺寸&#34; SPLITTER - 1
的{{1}},将它们写入parts
的传递内存,并返回已执行拆分的数量(如果输入无效,则返回-1)。
关于您的示例,用法如下:
int result;
char parts[10];
int i;
result = split(254321, parts, 10);
for (i = 0; i < result; i++)
{
printf("part #%d: %d\n", i + 1, parts[i]);
}
输出将是:
part #1: 21
part #2: 43
part #3: 25
答案 2 :(得分:2)
更不用说,你的问题真的很模糊。准确了解您的要求和使用的语法。声明char b = {25,43,21};除了任何c编译器的直接语法错误之外什么都不是。
假设您的输入始终是一个六位数字&amp;要求是 char b [3] [2] 一个简单的itoa()模拟可能是:
int num, i, j,d;
char b[3][2];
for(i=2; i>=0; i--)
for(j=1; j>=0; j--){
d = num % 10;
b[i][j]= d+48;
num = num / 10;
}
就是这样,您的阵列已经可以使用了。希望这会有所帮助。