c语言如何输入长整数能够完整存储到内存

c语言输入长整数
代码

#include<stdio.h>
int main(){
long n;
scanf("%d",&n);
printf("%d",n);
int sum = 0;
int yushu = 0;
while (n/10!=0){
sum+=n%10;
printf("%d\n",n%10);
n = n/10;
}
printf("%d",sum);
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

怎么能够让输入的数据完整的存储

我想要达到的结果

输入输出一致。

仅供参考!谢谢!

img


#include<stdio.h>

#if 0
首先你应该清楚有符号长整型
最多支持19位数十进制数
超出将溢出,不能准确表示。

要想任意长度的输出,应该用字符串的方式。
如果纯粹是为了输出,直接字符串方式输入然后输出即可,没必要去计算了。

还有格式化输入输出,如果用到长整型,要添加长度修饰符。
%ld,而不是%d。

最后主函数要有返回值。
#endif

int main()
{
    long n;
    scanf("%ld", &n);
    printf("%ld\n\n", n);
    
    int sum = 0;
    int yushu = 0;
    printf("各个位分别是:\n");
    while (n / 10 != 0)
    {
        sum += n % 10;
        printf("%d\n", n % 10);
        n = n / 10;
    }
    
    if(n!=0)
    {
        printf("%d\n", n);
        sum+=n;
    }
        
    printf("\n各个位的数字之和为:%d\n",sum);

    return 0;
}

可以存到数组里