Strings auslesen
-
HI Leute
Ich habe folgendes Problem. Ich haeb eine csv Datei in der Strings mit Komma getrennt voneinander stehen (Vorname,Nachname). Nun will ich die Strings auslesen.
fscanf(dFile,"%s",fStruct.vname); fscanf(dFile,"%s",fStruct.nname);
Jetzt ist aber das Problem das er das Komma nicht als Trennung zwischen den Strings erkennt.
Wie kann ich das Problem lösen und wie sieht der Code dazu aus.
-
Ich würde den kompletten Namen mit fgets einlesen.
Mit strchr bekommst Du die Position des Kommas und kannst dann vom Anfang bis zum Komma in den Nachnamen und vom Komma bis zum Ende in den Vornamen kopieren.
-
Plueschi1 schrieb:
HI Leute
Ich habe folgendes Problem. Ich haeb eine csv Datei in der Strings mit Komma getrennt voneinander stehen (Vorname,Nachname). Nun will ich die Strings auslesen.
fscanf(dFile,"%s",fStruct.vname); fscanf(dFile,"%s",fStruct.nname);
Jetzt ist aber das Problem das er das Komma nicht als Trennung zwischen den Strings erkennt.
Wie kann ich das Problem lösen und wie sieht der Code dazu aus.struct person { char vname[20]; char nname[20]; }; int main(void) { FILE *fp; int erg = 0; struct person pwperson; struct person *pwp = &pwperson; if((fp = open("datei.txt", "r")) == NULL) { return 1; } result = fscanf("%20[^,],%20[^]", pwp->vname, pwp->nname); fclose(fp); printf("%s: %S\n", pwperson.vname, pwperson.nname); return 0; }
Halt nur in einer Schleife dann ;).
-
[quote="_fscanf_"]
result = fscanf("%20[,],%20[]", pwp->vname, pwp->nname);
[/code]sch... .(
fscanf("%20[,],%20[,]", ....);
so ists richtig:).
-
Hallo alle zusammen,
So, ich habe ein paar Werte aus einem Bildverarbeitungsprogramm in eine Datei schreiben lassen. Diese würde ich gerne auslesen und die Kommata und Leerzeichen zwischen den Zahlen rausfiltern und die Werte anschliessend untereinander ausgeben lassen. Der Quellcode sieht folgendermaßen aus.
#include <stdio.h>
#include <stdlib.h>int main() {
FILE *datei;
char c;
char *s = c;
char * res;
datei=fopen("Werte.txt", "r");if(datei != NULL) {
while( (c=fgetc(datei)) != EOF)
putchar(c);}
else {
printf("Konnte Datei nicht finden bzw. oeffnen!\n");
getchar();
return EXIT_FAILURE;}
return EXIT_SUCCESS;res= strtok(s," ,");
while(res != NULL)
{
printf ("%s\n", res);
res=strtok(NULL," ,");
}
getchar();
return 0;
}Aber irgendwie funzt es noch nicht Bin noch ein Anfänger...Komme nicht mehr weiter...
Für eure Hilfe wär ich sehr verbunden!!!
-
bitte das nächste mal cpp tags benutzen
du liest aus der datei jedes zeichen einzeln mit fgetc() und gibst dieses dann
mit putchar() aus.
s wiederum zeigt auf c:char *s = c;
nachdem du also alle zeichen ausgelesen hast, zeigt s auf das zuletzt ausgelesene zeichen.
dann macht ein suchen nach einem komma in s natürlich keinen sinn. ok, keine
lösung für dein problem, aber jetzt weißt du was dein programm macht
wenn du wirklich nicht selbst drauf kommst, hake nochmal nach
-
sothis_ schrieb:
bitte das nächste mal cpp tags benutzen
du liest aus der datei jedes zeichen einzeln mit fgetc() und gibst dieses dann
mit putchar() aus.
s wiederum zeigt auf c:char *s = c;
nachdem du also alle zeichen ausgelesen hast, zeigt s auf das zuletzt ausgelesene zeichen.
dann macht ein suchen nach einem komma in s natürlich keinen sinn. ok, keine
lösung für dein problem, aber jetzt weißt du was dein programm macht
wenn du wirklich nicht selbst drauf kommst, hake nochmal nachDanke erstmal...und wie zeige ich es dann auf den gazne String???
-
du kannst zum beispiel (wenn es eine textdatei ist) den inhalt in deiner
while-schleife mit fgetline() auslesen. bevor du die nächste zeile ausliest,
kannst du dann im ausgelesenen string nach dem komma suchen.
ein fgetc() ist für den fall ungeeignet, weil du den kompletten string
selbst zusammensetzen müsstest. dies würde fgetline() für dich übernehmen