Probleme beim Zeilen zählen



  • Ich versuche so die Zeilen zu Zählen:

    f = fopen ("test.txt","r"); 
    while (fgets(a,sizeof(a),f) != 0)
    {
    zaehler = zaehler + 1;  
    }
    

    Die Datei hat mehr als 12 Zeilen.
    Wenn ich aber den Wert von "zaehler" ausgebe zeigt er mir immer 4 an.
    Was ist den bitteschön an diesem Code verkehrt?



  • was ist denn 'a'?
    füg doch mal in die schleife ein puts(a); ein
    🙂



  • char a[500];
    

    Wo genau soll ich den puts(a); einsetzen un d was bezweckt puts?



  • hehe schrieb:

    char a[500];
    

    Wo genau soll ich den puts(a); einsetzen un d was bezweckt puts?

    ein puts in der schleife zeigt dir die soeben eingelesene zeile an.
    übrigens: teste am schluss mit feof und/oder ferror den zustand des FILE*
    🙂



  • Bist du dir auch sicher, das jede Zeile nur 500 Zeichen hat? ( Wär eigentlich komisch wenn es überhaupt so weit käme.. )

    Mach's am besten mit Zeichen. Lies ein Zeichen nach dem anderen, und wenn es eine neue Zeile ( iChar == '\n' ) gibt, dann incrementierst du deine Variable um eine Zeile.



  • Nimm den, der bringt's 😉

    #include <string.h>
    #include <stdio.h>
    
    int main(void) {
    	int i = 0;
    	FILE *fp;
    	char file[512];
    	char line[4096];
    	printf("Input full Path: ");
    	fgets(file, sizeof(file) - 1, stdin);
    	file[strlen(file) - 1] = '\0';
    	fp = fopen(file, "r");
    	if(!fp) {
    		return 1;
    	}
    	while(fgets(line, sizeof(line) - 1, fp)) {
    		++i;
    	}
    	printf("Lines counted: %d", i);
    	getchar();
    	return 0;
    }
    


  • Hi

    char line[4096];  //<< kann man das auch dynamisch machen, weil statisch nervt es doch, das könnte evtl. ne bof werden
    

    ich schätze durchzählen (zeichenweise) und dann via malloc speicher reservieren?

    Was heisst eigentlich 'referenzieren' ' dereferenzieren' das ist für mich nicht verständlich. danke

    gruss susi sorglos!


Anmelden zum Antworten