憨憨的C语言问题,在线求解

#####是不是存储的问题
想让程序更自动一点

遇到的现象和发生背景,请写出第一个错误信息

程序没有语法问题
每次都更我输出的都不一样
如果不用scanf就不会错误;
是 什么原因

#include 
int main() {
    int x;
    scanf("%x", &x);
    //int x = 123456789;
    int count = 0;
    int t = x;
    while (t > 0) {
        t /= 10;
        count++;
    }
    printf("count=%d\n", count);
    
    int mask = 1;
    while (count > 1) {
        mask *= 10;
        count--;
    }
    printf("mask=%d\n", mask);

    do {
        int d = 0;
        d = x / mask;
        printf("%d ", d);
        x %= mask;
        mask /= 10;
    } while (x > 0);

    return 0;
}

运行情况截图。

img

运行结果及详细报错内容

每次都更我输出的都不一样
如果不用scanf就不会错误;
是 什么原因;
新手上路

scanf的格式化字符串不对吧,%x是十六进制数

输入语句:scanf("%d", &x); //scanf("%x", &x);