größte Zahl in einer Textdatei ermitteln
-
das problem ist. der inhalt sieht ungefähr so aus:
1, blabla;
2, blaba;
3, balba;
4, blabla;
-
Da kann dir ev, der Befehl strchr, bzw strstr weiterhelfn.
-
metapoint2011 schrieb:
das problem ist. der inhalt sieht ungefähr so aus:
...Könnte man einfach mit strtol() (und unter Umständen strtok()) durchgehen.
metapoint2011 schrieb:
Da kann dir ev, der Befehl strchr, bzw strstr weiterhelfn.
Von so einem Gefrickel rate ich ab, die Standard-Bibliothek kann Zahlen in Strings selbst erkennen.
-
metapoint2011 schrieb:
ich habe die textdatei eingelesen und in einem char array gespeichert.
Super.
Du hast jetzt also ein char[] befüllt oder ist es doch ein char *[]?
-
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?
-
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 zweitesconst
fürdelims
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??