stdio-Salat



  • Hallo!
    Ich hab seit Jahren nicht mehr in C/C++ programmiert und stehe jetzt auf dem Schlauch. Folgendes Programm ist nur so ein Test-Programm, um mich wieder an die ganzen Funktionen und deren Funktionsweise zu erinnern.:

    int main(int argc, char* argv[])
    {
        FILE *vocfile=fopen("vocabulary.txt", "r");
    	char lines[256][256];
    // <Korrektur>
             memcpy(lines, 0, 256*256*sizeof(char));
    // </Korrektur>
    	for (int i=0; i<256; i++)
    		if (fgets(lines[i], 256, vocfile))
    			printf(lines[i]);
    		else
    			break;
    	getchar();
    	for (i=0; i<256; i++)
    		printf(lines[i]);
    	fclose(vocfile);
    	return 0;
    }
    

    Was das Programm meiner Meinung nach tun sollte:
    1. Die Datei "vocabulary.txt" Zeile für Zeile einlesen und in das Array "lines" kopieren, dabei jede Zeile, die gerade eingelesen wurde, auf der Standardausgabe ausgeben.
    2. Auf einen Tastendruck warten.
    3. Noch mal überprüfen, ob jetzt tatsächlich alles an seinem Platz ist und das Array noch mal Zeile für Zeile ausgeben.

    Die erste Ausgabe während des Einlesens, also in der ersten for-Schleife, funktioniert.
    Bei der zweiten Ausgabe kommt nur Müll raus (irgendein komisches Zeichen unendlich oft wiederholt).

    Also, irgendwie scheinen die eingelesenen Zeilen da nicht so gespeichert zu werden, wie ich mir das vorgestellt hab. Was hab ich falsch gemacht?

    Danke schon mal im Voraus!

    Krecik

    Edit: Hab das Problem erkannt. Siehe Korrektur im Code.


Anmelden zum Antworten