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 🙂


Anmelden zum Antworten