Zum Inhalt springen

noob4326

Mitglieder
  • Gesamte Inhalte

    1
  • Benutzer seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

  1. Guten Tag allerseits, ich soll ein Programm schreiben welches Zahlen aus einer txt Datei ausliest und zu einem Sudoku zusammensetzt. Die Verarbeitung der Zahlen, Regeln, etc. ist alles schon fertig jedoch krieg ich jedes Mal ein "Speicherzugriffsfehler". Ein ähnlicher Fall hab ich hier schonmal gesehen und hatte gehofft hier eine Antwort zu finden. Ich vermute es liegt an meinem Speichermanagment aber leider komme ich nicht auf den Fehler. Ich hab fgets/fscanf mit realloc/free probiert aber kein Erfolg. Meine Main sieht so aus: char* zeile_sudoku; char** inhalt_sudokus; //Speicher reservieren inhalt_sudokus=(char**)malloc(sizeof(char*)*anzahl_zeilen-1); for(a=0;a<anzahl_zeilen;a++){ inhalt_sudokus[a]=(char*)malloc(sizeof(char)*81); } zeile_sudoku=(char*)malloc(sizeof(char)*81); sudoku_txt=fopen("Sudokus.txt"],"r"); //Überprüfen ob die Datei überhaupt geöffnet werden konnte if(sudoku_txt==NULL){ printf("Fehler beim lesen der Datei %s\n",argv[1]); return -1; }else{ //Zeilenweise die txt datei auslesen udn einspeichern for(a=0;a<anzahl_zeilen;a++){ fscanf(sudoku_txt,"%s\n",&inhalt_sudokus[a]); printf("%d:\t%s\n",a,inhalt_sudokus[a]); inhalt_sudokus[a]=realloc(inhalt_sudokus[a],strlen(inhalt_sudokus[a])); } fclose(sudoku_txt); } printf("Herzlich Willkommen! Bitte eine Schwierigkeit auswählen\n"); printf("1:\tSehr Einfach\n2:\tEinfach\n3:\tMittel\n4:\tSchwer\n5:\tSehr Schwer\n"); scanf("%d",&auswahl_1); printf("Wollen sie das erste (1) oder zweite (2) Sudoku spielen?\n"); scanf("%d",&auswahl_2); //Die zweite Auswahl überprüfen if(auswahl_2!=1 && auswahl_2!=2){ printf("Eingabe unbekannt! Abbruch!\n"); return -1; } //Die richtige Zeile auswählen basierend auf der Wahl des Benutzers switch(auswahl_1){ case 1: //Sehr Einfach (Zeile 1+3) switch(auswahl_2){ case 1:zeile=2; break; case 2:zeile=3; break; } break; case 2: //Einfach (Zeile 6+8) switch(auswahl_2){ case 1:zeile=5; break; case 2:zeile=6; break; } break; case 3: //Mittel (Zeile 11+13) switch(auswahl_2){ case 1:zeile=8; break; case 2:zeile=9; break; } break; case 4: //Schwer (Zeile 16+18) switch(auswahl_2){ case 1:zeile=11; break; case 2:zeile=12; break; } break; case 5: //Sehr Schwer (Zeile 21+23) switch(auswahl_2){ case 1:zeile=15; break; case 2:zeile=16; break; } break; default: printf("Eingabe unbekannt! Abbruch!\n"); return -1; break; } zeile_sudoku=inhalt_sudokus[zeile]; for(a=0;a<anzahl_zeilen;a++){ free(inhalt_sudokus[a]); } laenge_zeile=strlen(zeile_sudoku); printf("Erfolg nach Strlen\n"); //Den String Zeichenweise in Int umwandeln c=0; for(a=0;a<9;a++){ for(b=0;b<9;b++){ sudoku[a]=(zeile_sudoku[c])-'0'; if(sudoku[a]==0){freie_felder++;} c++; } } free(zeile_sudoku); //Noch mehr Programm welches kein dyn. Array mehr benutzt Ich öffne die C Datei in der Linux Konsole wie folgt: gcc Sudoku.c ./a.out Folgendes passiert in der Konsole: 0: sehr 1: einfach: 2: 076194380504783296938052174625941837490328051000576409169237548053419700042065910 3: 162983574745612398098547216004008001231765080907401652023170905019324867476059123 4: Einfach: 5: 009207405500086001102540900020090008007000600900760032000001706000052004601409200 6: 040075098900680200783219050078521469024908710510060002492756800105043007807100040 7: Mittel: 8: 400629000600570030021030005000890000048300279000054100200045801060003004004102007 9: 080060070009074000060008000290650000800047000400892050008230900340080165900000830 10: Schwierig: 11: 207040000000500009000000010006100300000900200080000000000082700950000000000000000 12: 000000000000060001305000040080000900009000050000100300100000000000003000260800004 13: Sehr 14: Schwierig: 15: 100008700060031000305000000008090006006000500400070300000000804000960030009400001 16: 050000406309000080076000002000000037000064500000090200500032000040100000908500000 Herzlich Willkommen! Bitte eine Schwierigkeit auswählen 1: Sehr Einfach 2: Einfach 3: Mittel 4: Schwer 5: Sehr Schwer 1 Wollen sie das erste (1) oder zweite (2) Sudoku spielen? 1 Speicherzugriffsfehler Ich würde mich um jede Hilfe freuen. Gruß Leo

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...