hat sich erledigt anscheinend ist lsearch ident mit lfind
Beiträge von AlexW
-
-
lfind und lsearch verwechselt?
das beispielprogramm zu lsearch kapier ich nicht wirklich.... -
schaut bei lsearch die compare funktion anders aus als bei bsearch weil beim funktionsaufruf gibt es anscheinend keinen Unterschied
Zitatlsearch() soll von der Funktion und vom Aufruf her identisch sein mit bsearch(), außer daß das Feld für bsearch() sortiert sein muß. Für lsearch() ist dies nicht nötig.
trotzdem geht die lsearch funktion (Code2) nicht
C
Alles anzeigen[COLOR=#000080]#include <stdio.h> #include <stdlib.h> int values[] = { 10, 20, 25, 40, 90, 100 }; int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } main () { int * pItem; int key = 40; pItem = (int*) bsearch (&key, values, 6, sizeof (int), compare); if (pItem!=NULL) printf ("%d is in the array",*pItem); else printf ("%d is not in the array",key); return 0; } [/COLOR]
C
Alles anzeigen[COLOR=#000080]#include <stdio.h> #include <stdlib.h> int values[] = { 10, 40, 100, 20, 90, 25}; int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } main () { int * pItem; int key = 40; pItem = (int*) lsearch (&key, values, 6, sizeof (int), compare); if (pItem!=NULL) printf ("%d is in the array",*pItem); else printf ("%d is not in the array",key); return 0; } [/COLOR]
ich frage mich nun wieso?
-
einfach und auf den punkt danke
brauch ich nämlich bei lsearch auch nochmal -
woow so simple kanns gehen
danke sehr
bis auf size_t (muss ich mal eben googlen) hätt ich das wohl auch können sollen :hewa: -
nachdem ich die Angabe nun ja halbwegs verstanden habe
stehen in keinem File Zahlen und Buchstaben gemischt nur entweder oder (z.B. die Datei besteht rein aus Fließkommazalen)wie können mir die cctype funktionen helfen eine Datei in ein Array zu schreiben?
-
-
stimmt auch wida
aba wir arbeiten zum glück noch nicht sehr ressourcen bewusst -
ja so schon aber dann brauch ich für jeden Datentyp ne eigene compare Funktion und ich hab jetzt eine Funktion für alle Datentypen
-
deine version is schon gut so, aber für float und double nicht verwendbar
und die argc argv methode funktioniert für wörter, buchstaben, fließkommas, integer,.... -
hab jetzt wieder auf meinen erste versuch mit argc argv zurückgegriffen und werd das über 2d array in ein qsort für Dateien ummodeln
-
ja soweit is mir schon klar
aber wenn ich mit dem qsort jetztdurch ne datei fege (Text) dann beachtet er doch nicht den ascii oda? -
http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/
Mach's so wie in dem Beispielprogramm beschrieben. Nicht als String nehmen, sondern als Zeichen.
da isses doch nur mit integers
das funktioniert doch mit anderen Zeichen nicht oda versteh ich da grad was nicht -
nja danke auf jeden Fall mal
jetzt hab ich eh das Wochenende Zeit und werd mir das alles mal in Ruhe anschauen mal schauen was dabei rauskommt -
Du musst den Wert in der Datei ja irgendwie interpretieren. Also zu sagen was da jetzt für ein Typ steht geht ohne weiteres nicht.
Array kannst verwenden oder wenns online gehen muss z.B. 2-4 Baum (also wenn du es bearbeiten können musst o.ä.)wenn ich jetzt ne beliebige Datei hätte (einfaches bsp)
Zitatdefacb34tz1
könnte ich da einfach jedes Zeichen als "string" verwenden und sortieren wies mit argc, argv schon funktioniert hat?
-
Du könntest auch einfach mal in den passenden Thread im Sysprog Forum schauen
ok hätt ich doch besser genauer geschaut
danke werd mir das mal zu Gemüte führen -
eine beliebige (binär)Datei sortieren entweder auf- oder absteigend
wobei ich mir nicht im klaren bin wie man Sonderzeichen (,;?=) sortieren kann (außer vl nach ASCII) -
also was ich bisher habe
C
Alles anzeigen#include <stdio.h> #include <stdlib.h> #include <string.h> #define FALSE 0 #define TRUE 1 int main (int argc, char *argv[]) { FILE* f; char c; if(argc < 2) { fprintf(stderr, "Fehlerhafe Eingabe"); return EXIT_FAILURE; } else if(getopt(argv[1],"h") == TRUE ) { help(); exit(EXIT_SUCCESS); } else if(getopt(argv[1],"t") == TRUE ) { f = fopen(argv[2], "r"); //qsort(f, ANZ, sizeof(char *), compare); if (f == NULL) fprintf(stderr, "Datei %s konnte nicht geoeffnet werden", argv[2]); else { while((c=getc(f)) != EOF) putc(c, stdout); } exit(EXIT_SUCCESS); } return 0; }
-
danke vielmals :thumb:
und wie kann ich das ganze jetzt auf eine Datei gesehen anwenden?
zu mal ich da ja nicht mit %c und %d ausgebn kann sondern die ganze Datei betrachten muss, gibt es da ne Möglichkeit?oder kann ich eben den Dateiinhalt in ein Array speichern dann müsste ich aber irgendwie zwischen den Dateitypen unterscheiden
-