Aus txt. Datei in ein int array schreiben
-
Hallo zusammen !
Ich möchte folgende Datei lesen und in ein 2d int array speichern!8 1 4 5
7 12
36
3 45 76 39 5
52
3 8 2 9
17 8Ist ein Sudoku.
Mein Ansatz war der , dass ich es erst in ain char array schreibe und dann von dem aus ins int array caste.
Ausgabe sieht teilweise richtig aus aber nach n par zeilen wirds falsch und verschoben.
FILE *datei; datei = fopen (argv[1], "r"); if (datei != NULL) { fscanf (datei, "%81c", text); text[100] = '\0'; printf ("%s\n", text); k=0; for(i=0;i<=8;i++){ printf("\n"); for(j=0;j<=8;j++){ if(!isdigit(text[k])) feld[i][j]=0; else feld[i][j]=atoi(&text[k]); k++; printf("%i",feld[i][j]); } } fclose (datei);
Wäre nett wenn jemand ne Lösung parat hätte!
-
Nimm statt
fscanf()
lieberfgets()
, denn du wilst ja eine Zeile einlesen.atoi()
ist für Strings (Nullterminierte char-Arrays) da.
Wenn du in deiner zweiten Zeile zur 1 kommst, liest er das mit der 2 dahinter zur 12.
Wenn du nur eine Ziffer umwandeln willst:feld[i][j] = text[k] - '0';
-
suckobert schrieb:
fscanf (datei, "%81c", text); <-- macht sicher nicht das, was du beabsichtigst text[100] = '\0'; <-- geht schief, falls char text[100]; definiert wurde printf ("%s\n", text); k=0; for(i=0;i<=8;i++){ printf("\n"); for(j=0;j<=8;j++){ if(!isdigit(text[k])) <- auch das geht schief, da du hier leere Felder nicht durch Whitespaces in der Datei vorgeben darfst, sondern explizit z.B. durch X.
int a[9][9],i=0; ... while( i<9 && 9==fscanf(f,"%d%d%d%d%d%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5],&a[i][6],&a[i][7],&a[i][8]) ) ++i;
könnte funktionieren für Dateiinhalte der Form: ( 0 kennzeichnet leeres Feld )
1 2 0 4 0 6 0 8 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .