größte Zahl in einer Textdatei ermitteln



  • nein, weil ich da den wert schon wissen müsste.

    denn strchr ist zum vergleichen.

    es ist z.B. char test[500];



  • denn strchr ist zum vergleichen.

    Wo hast du den so ein sch**** gelernt?



  • Jürgen Wolf 😃 also es ist da um einen String zu suchen oder nicht?
    und da muss ich ja den wert schon kennen



  • metapoint2011 schrieb:

    ist da um einen String zu suchen oder nicht?

    strstr() sucht String, strchr() sucht Zeichen.



  • ja stimmt. aba trozdem hilft mir das nicht weiter.



  • metapoint2011 schrieb:

    naja gut okay. aba trozdem hilft mir das nicht weiter.

    strtok und strtol helfen auch nicht?



  • ja dann hab ich alles zerlegt. und wie finde ich jetzt die größte zahl?


  • Mod

    Binggi schrieb:

    Wo hast du den so ein sch**** gelernt?

    metapoint2011 schrieb:

    Jürgen Wolf 😃

    Ist das jetzt ein Scherz oder liest du ernsthaft den Wolf?



  • metapoint2011 schrieb:

    ja dann hab ich alles zerlegt. und wie finde ich jetzt die größte zahl?

    Zum Beispiel so:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <limits.h>
    
    int main(void)
    {
       char test[] = "1, blabla;\n"
                     "2, blaba;\n"
                     "3, balba;\n"
                     "4, blabla;\n";
       char const * const delims = ",; \n";
       int const base = 10;
       long max = LONG_MIN;
    
       for (char *token = strtok(test, delims);
            token != NULL;
            token = strtok(NULL, delims))
       {
          char *end;
          long number = strtol(token, &end, base);
          if (end == token)
             continue;
          printf("Zahl gefunden: %ld\n", number);
          if (number > max)
             max = number;
       }
       printf("Groesste Zahl: %ld\n", max);
    }
    

    Edit:
    Ein zweites const für delims spendiert.



  • ja, bin gerade dabei mir ein gutes Buch zu bestellen. und so lange habe ich die Onlineversion von dem gelesen und 100 andere online Tutorials die alle echt schlecht sind.

    da war das noch eins davon das man am besten Versteht, finde ich.



  • funktioniert nicht.

    du hast da die base also 10. und wenn es z.b. 20 sind? und nicht nur 10?
    so bricht das programm sofort ab.

    so würde ich ja sozusagen schon fasst wissen was die größte zahl ist.
    wenn die zahlen 0,1,2,3,4,5... halt nach der reinfolge sind.

    wie es auch in der datei is.



  • metapoint2011 schrieb:

    funktioniert nicht. da muss ich doch wieder vergleichen.

    Was denn vergleichen?

    metapoint2011 schrieb:

    du hast da die base also 10. und wenn es z.b. 20 sind? und nicht nur 10?

    Die Basis deines Zahlensystems musst du schon selbst wissen.

    metapoint2011 schrieb:

    so bricht das programm sofort ab.

    Seltsam, bei mir läuft das ohne Warnungen. Wie äussert sich der Absturz?



  • #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    
    int main()
    {
      char *str="bla 1, fasel\n 4712foo 4711, bar-0";
      char *e,s[100],*p=str;
      int n=0;
      long l, m=LONG_MIN;
      while( 1==sscanf(p+=n,"%99s%n",s,&n) )
        if( l=strtol(s,&e,10),strchr(",;",*e) )
          m=m<l?l:m;
      printf("\n%ld",m);
      return 0;
    }
    


  • metapoint2011 schrieb:

    so würde ich ja sozusagen schon fasst wissen was die größte zahl ist.
    wenn die zahlen 0,1,2,3,4,5... halt nach der reinfolge sind.

    😕

    Und bitte lieber einen neuen Post machen als wild herumeditieren, da blickt doch kein Mensch mehr durch.



  • ja das mit dem vergleichen war jetzt doof.
    ^^habs ja noch geändert.

    der code ist ja eig in ein win 32api programm mit eingebaut. und das programm stürzt dann einfach ab, wenn es mehr als 10 sind z.b 1-20.



  • metapoint2011 schrieb:

    das programm stürzt dann einfach ab, wenn es mehr als 10 sind z.b 1-20.

    Mein Code stürzt bei mehr als 10 Zahlen in test ab??



  • ja beenden sich einfach und bei dem code von wutz kommen diese Fehler:

    f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(171): error C2040: 'p': 'char *' unterscheidet sich von 'int' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
    1>f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(174): error C2664: 'sscanf': Konvertierung des Parameters 1 von 'int' in 'const char *' nicht möglich
    1> Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    1>f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(174): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.



  • Wutz schrieb:

    int main()
    

    Nichtmal ein klitzekleines void gefällig?

    Wutz schrieb:

    sscanf(p+=n,"%99s%n",s,&n)
    

    Magic number 99? Auch der Rest sieht irgendwie konfus aus.

    metapoint2011 schrieb:

    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

    Für C++ bitte eine Etage tiefer absteigen.



  • Du solltest mal genau schreiben, was in der Datei konkret steht und was du erreichen möchtest. Ist das Dateiformat so vorgegeben und nicht änderbar?
    Eventuell gibt es bessere Formate, mit denen du dein Problem wesentlich geschickter lösen könntest (bspw. Konfiguratonsdateien [*.ini]).

    Ü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).



  • metapoint2011 schrieb:

    ja beenden sich einfach

    Kann ich nicht reproduzieren. Hast du was daran verändert?


Anmelden zum Antworten