größte Zahl in einer Textdatei ermitteln



  • metapoint2011 schrieb:

    ich möchte die größte zahl wissen, ohne zu wissen wie viele drin sind.

    Genau das tut mein Programm.

    metapoint2011 schrieb:

    und mit deim base = 10; tust du ja schon vorraussetzen das man wissen muss wieviel dadrinne ist.

    Nein, das ist die Basis des Zahlensystems. Hab ich aber auch schon gesagt.

    Und jetzt: EOD.



  • Vicious Falcon schrieb:

    Übrigens: Welcher Compiler beim MSVS zum Einsatz kommt, hängt einzig und allein von der Dateiendung der Dateien ab (*.c -> C-Compiler, .cpp/.cc etc. C++-Compiler).

    Unsinn.
    Dazu gibt es die Optionen /TP /TC, welche auch über Projekteigenschaften erreichbar sind.



  • Da haben wir es doch schon: Schreib die Einträge einfach untereinander in die Datei und lese zeilenweise ein:

    FILE* f = fopen("text.txt","r");
        char line[100];
        if(f)
        {
            while(fgets(line,100,f))
            {
                SendDlgItemMessage(hwnd,ID_DES_CTRLS,LB_ADDSTRING,0,(LPARAM)line);
            }
            fclose(f);
        }
    

    Aufbau der Datei dann

    Wort1
    Wort2
    Wort3
    ...
    

    Edit: @wutz: Wo denn da genau?



  • Vicious Falcon schrieb:

    [/cpp]SendDlgItemMessage(hwnd,ID_DES_CTRLS,LB_ADDSTRING,0,(LPARAM)line);[/cpp]

    Wollt ihr das nicht im Windows-Forum besprechen?



  • Kommt es dir wirklich auf die Zahl an oder brauchst du nur die Anzahl der Zeilen in der Datei?



  • brauche nur die größte zahl... mehr nicht.

    die muss dann noch -1 gerechnet werden. aba das is ja einfach.

    var-1; oder nicht?



  • Vicious Falcon schrieb:

    Edit: @wutz: Wo denn da genau?

    Bei VS 2008 Express:
    Eigenschaften / Konfigurationseigenschaften / C/C++ / Erweitert --> Kompilierungsart



  • Leute ich hab jetzt den Fehler gefunden.. am ende vom code:

    max = (number);

    musste es so dastehen:

    max = (number-1);

    ich habe danach minus 1 gerecht.
    also max-1
    was der compilier irgentwie nicht gemacht hat.
    hatte aber auch garkeine fehlermeldung ausgegeben.



  • also danke nochmal an mngbd

    sorry das ich dich jetzt so verärgert habe 😃

    aba wenn der kein fehler anzeigt, weiss ich ja auch nicht



  • metapoint2011 schrieb:

    also danke nochmal an mngbd

    sorry das ich dich jetzt so verärgert habe 😃

    Schon vergessen.
    🙂



  • das is gut 🙂

    das mit dem base muss ich mir jetzt mal genau angucken 😃


  • Mod

    metapoint2011 schrieb:

    die muss dann noch -1 gerechnet werden. aba das is ja einfach.

    var-1; oder nicht?

    😮 Man sieht schon. Ein echtes Wolf-Opfer. Nicht einmal eins abziehen bekommen sie richtig hin.

    Empfehlung: Buch sofort wechseln. Alles vergessen. Anderes Buch von vorne beginnen.



  • SeppJ schrieb:

    Anderes Buch von vorne beginnen.

    Das klingt wie eine vernünftige Idee.
    🙂



  • ja mach ich auch.. bestell mir direkt heute eins. wollte ich gestern schon machen.



  • Belli schrieb:

    Vicious Falcon schrieb:

    Edit: @wutz: Wo denn da genau?

    Bei VS 2008 Express:
    Eigenschaften / Konfigurationseigenschaften / C/C++ / Erweitert --> Kompilierungsart

    Ja, danke, habe ich übersehen. Der Schalter wurde wohl in der 2003er Version eingeführt.
    Ich muss aber dazu sagen , dass ich mein letzes WinAPI-Projekt mit C noch mit VS6 erstellt habe.



  • da bin ich nochmal.

    unzwar hab ich jetzt den inhalt der datei geändert.

    von z.b: 01 - Mustermann, Max; 02 - Mustermann, Moritz; <<< 1.

    auf z.b: 01;Mustermann, Max;02;Mustermann, Moritz; <<< 2.

    jetzt möchte ich dort die größte zahl herrausfinden.

    bei 1. war der code so

    for (char *token = strtok_s(cList, delims, &zeiger1);
    						token != NULL;
    						token = strtok_s(NULL, delims, &zeiger1))
    						{ 
    						char *end; 
    						long number = strtol(token, &end, base); 
    						if (end == token) 
    							continue; 
    						if (number > max) 
    						max = (number); 
    						}
    

    wie muss ich den jetzt umändern, das es wieder funktoniert.

    habs nicht hinbekommen.



  • keiner?



  • Du hast die vorigen Hinweise nicht beachtet und schraubst immer noch an deinem suboptimalen Code herum.
    Der Code ist für den Anwendungsfall suboptimal, da es kürzere, robustere standardkonforme Lösungen für den Fall gibt. Dazu zählen z.B. fgets/sscanf oder von mir aus auch fscanf.



  • metapoint2011 schrieb:

    wie muss ich den jetzt umändern, das es wieder funktoniert.

    habs nicht hinbekommen.

    Du gibst nur Codefragmente an, bei denen man noch nicht mal alle Parameter kennt und erwartest Auskunft? 😡

    Schau dir doch mal delims an. Da stehen die Trennzeichen drin.


Anmelden zum Antworten