Well, this:
>>struct dirent **check_dirent
says check_dirent is a pointer to a pointer to a struct dirent, which makes this incorrect:
>>check_dirent->d_name

You have an extra level of indirection to think about. If you had declared it like so:
>>struct dirent *check_dirent
then this would have been OK:
>>check_dirent->d_name
... I'm not saying you should change it to that, more using it to help highlight your error.

As for this:
>>check_stat.st_mode
check_stat is a pointer, so you need to use the -> syntax rather than dot.