Q: Valores inesperados matriz Tengo un programa bastante sencillo en el que leo 81 números entre el 1 y el 9 de un fichero y lo guardo en una matriz 9x9. Aunque el fichero que tengo, contiene los numeros 1,2,3...9 9 veces, al guardarlo en la matriz parte de los numeros no coinciden con los del fichero, y no me parece que sean valores basura (ademas de que he inicializado la matriz a '0'). He probado a usar tanto atoi como strtol.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define rows 9
#define columns 9

int main(){
    errno=0;
    char *ptr;
    int contador=0;
    char sk_number;
    int sudoku[rows][columns]={0};
    FILE *f=fopen("sudoku.txt","r");
    while((sk_number=fgetc(f))!=EOF){
    
        if(sk_number >= '0' && sk_number<='9') {
            //sudoku[contador/rows][contador%columns]=atoi(&sk_number);
            sudoku[contador/rows][contador%columns]=strtol(&sk_number,&ptr,10);
            contador++;
        }
    }
    for(contador=0;contador<=80;contador++) {
        printf("%i ",sudoku[contador/rows][contador%columns]);
        if((contador%9)==8) printf("\n");

    }
}

Output:
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
1 2 3 40 51 62 73 84 95 
16 27 38 49 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 

Gracias por la ayuda

A: listo hermnao soluconado el problema son la funciones que usas
simplemente te añadi un viejo truco en c para corregirlo espero haber ayudado
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
extern int errno;
#define rows 9
#define columns 9

int main(){
errno=0;
char *ptr;
int contador=0;
char sk_number;
int sudoku[rows][columns]={0};
FILE *f=fopen("sudoku.txt","r");
while((sk_number=fgetc(f))!=EOF){
    
        if(sk_number >= '0' && sk_number<='9') {
        //sudoku[contador/rows][contador%columns]=atoi(&sk_number);
        sudoku[contador/rows][contador%columns]=sk_number-'0';
        contador++;
    }
    }
for(contador=0;contador<=80;contador++) {
        printf("%i ",sudoku[contador/rows][contador%columns]);
        if((contador%9)==8) printf("\n");

    }
}

