Что не так с scanf и int8_t в си

Изучая указатели наткнулся с такой проблемой при попытке присвоить в переменные(2-е переменные p и g) с типом int8_t с консоли в первой переменной p всегда ноль, предполагаю что дело в чтение из потока но это мои догадки, что не так?

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

void fun(int8_t *i, int8_t *j){
    *i *= *j;
}

int main(int argc, char** argv){
    int8_t p = 0;
    int8_t g = 0;
    
    scanf("%" SCNu8,&p);
    scanf("%" SCNu8,&g);
    printf("p = %d, g = %d\n", p, g);
    
    fun(&p, &g);
    printf("%d ", p);
    
    return 0;
}

в консоли:

C:\Users\user\Desktop>gcc main.c
C:\Users\user\Desktop>a
4
5
p = 0, g = 5
0
C:\Users\user\Desktop>

Ответы (0 шт):