Problem mit For-Schleife in C



  • Hallo!

    Ich habe ein Problem bei nachfolgendem Programmausschnitt.
    Aus einer Datei sollen mir der Reihe nach, abwechselnd eine Zahl und ein darauf folgendes Zeichen eingelesen werden. Die Zahl vor dem Zeichen bestimmt die Anzahl wie oft das Zeichen ausgegeben werden soll. Die For-Schleife soll nun nacheinander die Zeichen ausgeben bis richtige Anzahl erreicht ist.

    Mein Problem besteht nun darin das ich nicht weiss wie ich das in der Schleife formulieren soll. Bei der Formulierung (k < anzahl[i]) folgt nur eine Endlosschleife mit hässlichen Fehlern. Aus sonst habe ich alles mögliche ausprobiert.

    Wer könnten mir sagen wie man diese Schleife vernünftig zum laufen bringen kann? Danke!

    char zeichen[sl]; 
    unsigned int anzahl[sl], i=0, j=0,k=0, l=0,
    
    while (!feof(file))
    {
    fscanf(caa, "%u%*c%c%*c ", &anzahl[i], &zeichen[i]);
    
    i++;
    
    for (j=0, k=0; (k < anzahl[i]); j++, k++) 
    {
    printf("%c", zeichen[j]);
    }
    }
    

    Edit:
    Es gibt hier auch code Tags: [cpp ] [ /cpp] (ohne Leerzeichen) oder "C/C++"-Buttob unter den Smilies. Erhoehen die Lesbarkeit deines Codes und damit die Chance eine Antwort zu bekommen merklich.



  • Danke für den Hinweis!

    Das j++ in der for-Schleife war ein Fehler. "Richtig" heisst es:

    while (!feof(file))
    {
    fscanf(caa, "%u%*c%c%*c ", &anzahl[i], &zeichen[i]);
    
    i++;
    
    for (j=0, k=0; (k < anzahl[i]); k++) 
    {
    printf("%c", zeichen[j]);
    }
    }
    

    Aber trotzdem erkennt die Schleife nicht den unsigned-int-Wert zeichen[i] aus der vorherigen Schleife. Wenn ich testweise statt zeichen[i] selbst eine Zahl in die Schleife schreibe, wird diese aber richtig ausgeführt.



  • mgredeck schrieb:

    Das j++ in der for-Schleife war ein Fehler. "Richtig" heisst es:[...]

    Offenbar ja nicht...

    mgredeck schrieb:

    Aber trotzdem erkennt die Schleife nicht den unsigned-int-Wert zeichen[i] aus der vorherigen Schleife.

    Wer erkennt was wo von wo nicht?
    Dir ist schon klar, dass die Variable j 1. komplett unnuetz ist und 2. "zeichen[j]" in der for-Schleife steht?


Anmelden zum Antworten