逆序输出一个整数的各位数字

问题遇到的现象和发生背景

逆序输出一个整数的各位数字
本题要求编写程序,对输入的一个非负整数,从低位开始逐位分割并输出它的各位数字。

输入格式:
输入在一行中给出一个长整型范围内的非负整数。

输出格式:
从低位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int main() 
{
    int i=0,danzi;
    long int n;
    scanf("%ld",&n);//3n
    if(n==0)
        printf("%ld",n);
    else
    {
        danzi=n%10;//3d
            while(n>0);
            {
                if(n<10)
                {
                    printf("%ld",n);
                    break;
                }
            
                else
                {
                    printf("%d ",danzi);
                    n=n/10;
                    danzi=n%10;
                }
        }
    }
    return 0;
}

运行结果及报错内容

[Error] break statement not within loop or switch
输入一个数字后卡死不动

这写的也太复杂了吧???
12行 while(n>0);后面的分号删掉!!!