Einzelne Zeichen auslesen bis zu einem zeichen



  • Hallo,
    ich habe eine Datei, in dem die Informationen stecken wie ein Labyrinth aufgebaut sein soll.
    Die erste Zeile beinhaltet die Größe x und y in so einen Format: 6x12 oder 12x14.
    Meine Frage ist: Zeilenweise kann ich mit fgets lesen. Wie kann ich die "gelesene Zeile" unterteilen und einer Variable zuweisen. Die ersten Zahlen bis x sollen der Varibale x zugewiesen werden und ab dem x Variable y. Der Rest der Datei beschreibt wie ein Labyrinth aufgebaut sein soll. Die Zeilen sollen auch einzelt gelesen werden und die Zeichen ersetzt werden und dem Array zugewiesen werden.

    int maze(char* filename, unsigned char labyrinth[100][100], uint8_t *size_x, uint8_t *size_y) {
    	FILE *datei; // Datei öffnen
    	datei = fopen(filename, "r");   
    	if (datei == NULL)
    		return 1;
    	char puffer[100];
    


  • int x, y;
    char c;
    if (fscanf(datei, "%d%c%d", &x, &c, &y) == 3)
    {
      // ...
    }
    


  • Oder

    if(fscanf(datei, "%d x%d", size_x, size_y) == 2) // Das Leerzeichen im Formatstring kann evtl entfallen
    


  • DirkB: aber nur, wenn size_x und size_y dann auch als "int *" deklariert sind (nicht wie jetzt als "uint8_t *").



  • Th69 schrieb:

    DirkB: aber nur, wenn size_x und size_y dann auch als "int *" deklariert sind (nicht wie jetzt als "uint8_t *").

    Danke

    #include <inttypes.h>
    ...
    if(fscanf(datei, "%"SCNu8" x%"SCNu8, size_x, size_y) == 2)
    

Anmelden zum Antworten