was mache ich nur falsch? bitte helft mir - beispiel ist dabei!
-
das machst du z.B. falsch:
gets(dateiname);
-
hallo tipp und tipp in der nacht,
das hilft mir jetzt nicht wirklich weiter
hatte doch auch mit dem adressoperator & funktioniert
das eigentliche problem liegt
im Bereich des vergleichens zwischen
dem, was im Speicher(also Zeile) gerade eingelesen wurde
und wenn dieses dann gefunden wurde was in
vergl steht soll er sich melden!später solls eigentlich mal so laufen,
dass ich anhand von einer datei die einträge
davon abgleiche mit einem angegebenen Verzeichnisinhalt.
alle files die nicht im .dat-file enthalten sind,
sollen dann gelöscht werden.hast du nen vorschlag ?
hatte auch schon versucht, ret als *ret
abzufragen, jedoch ohne erfolg (dachte,
dass es evtl. mit der anzahl der bytes zusammenhängt???)H I L F E :-0
vielleicht weiss ja morgen früh jemand etwas dazu?
-
Hi,
Du vergleichst einen int mit einem char. Außerdem schau Dir mal die Funktion strcmp zum vergleich zweier chars an. Mit == kommt man bei Char-Verarbeitung nicht so weit!
Gruß
Oliver
-
hi,
scheint aber auch mit strcmp nicht zu funktionieren.
erhalte immer noch 2 errors :-((
kennt denn niemand das problem?
grußfor(;;) { ret = fscanf(pfile, "%s", &buf); // Was soll in dem file abc.dat gefunden werden?? char vergl[]="10000.jpg"; if (!strcmp (ret,vergl) // wenn °10000.jpg° im File vorhanden ist, // dann folgende Ausgabe: {printf("Datei %s gefunden!\n",vergl); break;} // Ansonsten durchlaufe solange das File bis zum Ende if (ret == EOF) break
-
Hi,
du vergleichst, wenn ich es richtig gesehen habe, den int - Returncode mit deinem String, meiner Meinung nach musst Du aber den Inhalt von "buf" mit deinem String vergleichen. So kann das ja auch nicht funktionieren. Schau Dir in der MSDN mal die Erklärung zu fscanf an. Zurückgeliefert wird in einen Buffer und nicht in "retcode ="
Gruß
Oliver
-
hi,
hab die lösung:
for(;;) { ret = fscanf(pfile, "%s", &buf); // Was soll in dem file abc.dat gefunden werden?? char vergl[]="10000.jpg"; if (!strcmp (buf,vergl)) // wenn °10000.jpg° im File vorhanden ist, // dann folgende Ausgabe: {printf("Datei %s gefunden!\n",vergl); break;} // Ansonsten durchlaufe solange das File bis zum Ende if (ret == EOF) break; // END OF FILE WERT printf ("%s \n",&buf);
-
Du hast die Lösung?
Gruß
Oliver
-
bei dir muss aber die anzahl der eingelesenen bytes genau die größe des suchbegriffes haben und dieser auch noch an einem offset liegen, der genau dem vielfachen der buffergröße/begriffslänge entspricht
-
@flosko:
ääähhhmmmm *hüstel*
hast du dann auch einen konkreten quellcode für deine ausführungen??gruß
-
Hi,
also: Bei Dir muss ein Dateiname bzw. ein Satz Deiner Datei immmer ein festes Format haben (also so lang wie Dein Suchbegriff sein), damit es vergleichbar ist und bleibt, mit dem, was Du an Sätzen (Dateinamen) gerade einliest. Flexibel hinsichtlich anderer Satzlängen bist Du damit nicht. Ich glaube das war, was Flosko meinte. Ansonsten brauchst Du auch keinen Code, da Du Dir Deinen eigenen angucken kannst. Und dann habe ich noch eine Frage:
char vergl="10000.jpg";
mitten in einer EndlosforSchleife. Ist das guter Stil? Und dann das Benutzen von fscanf. Wäre da nicht fputs und fgets besser, da Du ja ganze Zeilen fester Länge einlesen bzw. schreiben willst?Kannste ja nochmal überlegen
Gruß
Oliver