#1 20. März 2014 Zuletzt bearbeitet: 20. März 2014 Hallo Jungs, brauch bitte mal wieder eure Hilfe, um das Folgende elegant zu lösen. Ich möchte gerne ein csv file auf ein bestimmtes Wort durchsuchen lassen.. Der Hintergrund zu dem Anliegen ist der, dass ich das File stündlich runterladen lasse und immer die Temperatur in Salzburg ausgelesen werden soll. Hierfür würde ich nach Salzburg suchen und und anschließend mit fgetpos die Position speichern, sodass ich nach dem ersten Mal direkt mit fsetpos von dort starten kann um die Temperatur erneut auszulesen. Das Ganze spielt sich natürlich in nem Endlosautomaten ab. Das hab ich schon alles, jedoch brauche ich noch ne elegante Lösung, um das Wort in dem File zu finden. Ist vermutlich nix dahinter, aber ich benötige trotzdem eure Hilfe. Freue mich auf jegliche Rückmeldung, die mir hilft. Grüße, ich + Multi-Zitat Zitieren
#2 20. März 2014 AW: [C] Wort in .csv Datei suchen regex heißt das zauberwort http://www.lemoda.net/c/unix-regex/index.html + Multi-Zitat Zitieren
#3 20. März 2014 AW: [C] Wort in .csv Datei suchen Wenn man davon ausgeht, dass die Datei bereits als char Array geladen wurde sollte strncmp helfen. //edit: Zu lahm. Die Lösung von Decryptor kommt jedoch nicht ohne Drittanbieter Libs aus. Regex gehört erst bei C++ zum Standard. + Multi-Zitat Zitieren
#4 22. März 2014 AW: [C] Wort in .csv Datei suchen Da ich gerade wach geworden bin und mein asoziales Selbst noch nicht ganz wach ist: Code: #include <stdio.h> #include <stdlib.h> void cache_set_pos(int pos); int cache_get_pos(void); int main() { const char *WORD_TO_FIND="Salzburg"; int old_temp_pos = cache_get_pos(); FILE *temps = fopen("TEMPARATUR.CSV", "r"); char buf[512] = {0}, c=0; int i=0; // buffer, aktuelles zeichen, buffer-offset sowie main() rückgabewert enum {lf_kw, lf_temp, end} flags = lf_kw; // flags: suche nach keyword, temparatur oder ende if(pos != -1) { fseek(temps, pos, SEEK_SET); } while(EOF != (c=fgetc(temps)) || flags == end) { if(i == 511 && c != ';') // 511 langes keyword, csv tabelle mögl. fehlerhaft { i=-1; break; } if(c == ';') { buf[i + 1] = 0; if(flags == lf_kw && 0 == strcmp(WORD_TO_FIND, buf)) { cache_set_pos(ftell(temps) - i); flags = lf_temp; } else if(flags == lf_temp) { printf("%s\n", buf); // temparatur flags = end; } i=0; } else { buf[i++] = c; } } fclose(temps); return i; } void cache_set_pos(int pos) { FILE *cache = fopen("TEMPARATUR.CACHE", "wb"); fwrite(&pos, 4, 1, cache); fclose(cache); } int cache_get_pos(void) { FILE *cache = NULL; int pos = -1; if(NULL != (cache = fopen("TEMPARATUR.CACHE", "rb"))) { fread(&pos, 4, 1, cache); fclose(cache); } return pos; } Code ist natürlich nicht optimal und man kann es auf jedenfall schöner machen, aber so sozial bin ich dann auch wieder nicht, wenn es hier um Hausaufgaben geht. Alles was du siehst ist ungetestet, kann also sein das ich hier und da einen Syntaxfehler eingebaut habe. + Multi-Zitat Zitieren
#5 22. März 2014 AW: [C] Wort in .csv Datei suchen vllt mit einem ganz anderen ansatz: OpenWeatherMap free weather API dann musst du nich immer n file runterladen, sondern kriegst direkt nur die infos, die du brauchst und kannst dann mittels json oder xml parser leicht die nötigen werte rausziehen. + Multi-Zitat Zitieren