Hallo Ich habe eine Frage bezüglich des Einlesens in den unteren Werten eines pgm-Wertes. Ich habe ein 2D-Array erstellt und 2 zusätzliche Leerzeichen für die Höhe und Breite hinzugefügt, um einen Puffer erstellen zu können wenn ich versuche, in die erste ganze Zahl bis zur Breite + 1 zu lesen, funktioniert es nicht. Gibt es Hinweise, warum der Code hier aufhört?Lesen in einer PGM-Datei
FILE *pfile; //pointer to file
pfile=fopen(input_pgm,"r");
int columns,rows,value,line_of_numbers;
char pformat[50];
if (pfile==NULL){
printf("File is empty lame-o\n");
}
else{ //Read from file
fscanf(pfile,"%s",pformat); //Things like P2,P5
fscanf(pfile,"%d",&columns); //Number of columns ,M, Need & or it will store it into address
fscanf(pfile,"%d",&rows); //Number of rows , N
fscanf(pfile,"%d",&value); //Number of value, W
//Allocating 2D array to store M numbers
//printf("Test");
int **board;
board = (int **)malloc((rows + 2) * sizeof(int *));
for (i=0;i<rows+2;i++){
board[i]=(int*)malloc((columns+2)*sizeof(int));
}
//printf("Test2");
//INITILIZING TO 0
board=memset(board,0,((columns+2)*(rows+2)));
//printf("Test");
//reading in numbers on to board from 1->/rows/columns+1
for(i=1;i<=rows+1;i++){
for(j=1;j<=columns+1;j++){
//printf("Test3"); /*does not work after this*/
int scanned_num;
fscanf(pfile,"%d",&scanned_num);
board[i][j]=scanned_num;}
}
Problem könnte überall sein. Bitte lesen Sie, wie Sie [mcve] bereitstellen können. – user694733
Beachten Sie, dass, wenn 'fopen()' 'NULL zurückgibt, bedeutet dies, dass die Datei nicht geöffnet werden konnte, ** nicht **, dass die Datei leer ist. Es existiert möglicherweise nicht oder das Programm ist möglicherweise nicht berechtigt, darauf zuzugreifen, oder es könnte ein anderes Problem auftreten. Es ist möglich, eine leere Datei zu öffnen, und wenn Sie dies erfolgreich über 'fopen()' tun, dann ist der zurückgegebene Zeiger * nicht * 'NULL'. –
Definieren Sie "funktioniert nicht". –