C语言,输入一个数(较大)到数组中,使该数字每一位分别储存在数组的一个元素中。求代码,非常感谢

C语言,输入一个数(较大)到数组中,使该数字每一位分别储存在数组的一个元素中。求代码,非常感谢例如:输入123456789到A[]中,A[0]为1,A[1]为2……。 注意,由于我的A[i]还要进行数值计算(加减),如果使用字符串数组,用gets函数输入计算时会用asc‖码值计算,输出是若格式要求为%c时存在数字经计算后变成符号的问题

#include<stdio.h>
#include<stdlib.h>

void main(void)
{
char buf[64] = {0};
long a = 0;

printf("请输入一个数字:\n");
scanf("%s", buf);

a = atol(buf); //将存放在字符串数组中的数字转换为实际的数字,之后就可以进行相应的运算

printf("你输入的数字是:%d\n", a);

system("pause");
}

追问

我也是转换的,再声明一个int数组,char数组中每个值asc‖码值都减去48赋值给int数组

有没有不需要转换的呢?

追答int buf1[64];
char buf2[64];
int i = 0;

for (; i < sizeof(buf2) ; i++;){
    buf1[i] = atoi(&buf2[i]);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-02-10

#include <stdio.h>

void main()
{
unsigned int a = 0;
int b[10] = { 0 }; 
int i = 0;
int j = 0;
scanf("%d",&a);
for(;;++i)
{
b[i]= a % 10;
a = a / 10;
if (0 == a)
{
break;
}
}
  for (j = 0;j <= i; ++j)
  {
  printf("%d\n",b[j]);
  }

}

我这个粗糙了一点。。

追问

首先,谢谢,思路挺好,不过其实我在编的是一个大数除法的程序(思路和网上不一样),既然是大数long int都装不下,按你的方法来我可能要把这个数分开成多部分在输入,有没有直接就可以的方法呢?

追答

感觉还是线面那个老哥答的靠谱~