"Übung macht den Meister" oder "Verdammt ich will doch nur die Datei auslesen"



  • Danke für die flotte Antwort 🙂

    zu 1. aber in allen Tags sind Titel & Artist an der selben Stelle, von daher mal egal, aber zur Not les ich erst den Header aus, das klappt immerhin schon.

    zu 2. eh, ja , da mach ich mich mal schlau, Ansätze sind gut, danke :D.
    zu 3. Binaer hatte ich auch schon probiert, war das selbe Ergebnisse :(.



  • bei Minus gibt er direkt Fehler aus, aber könnte mir vielleicht jemand sagen welchen Sinn das L hat ?

    fseek(fp,128L,SEEK_END);

    Hab die Zeile aus nem buch benutzt und da steht leider nciht wozu das L dient.



  • @prolog stimmt, das kommt sogar noch dazu (o: das wirds vermutlich gewesen sein (O:

    -junix



  • Galeon schrieb:

    bei Minus gibt er direkt Fehler aus

    was für fehler?

    -junix



  • Aije, abtippen ^^

    Also, LabWindows meckert:

    Function fseek: (return value == -1 [0xffffffff]).
    (EINVAL) Invalid argument



  • Tag,

    Das L soll deutlich machen dass es sich um einen long-wert handelt.
    Das kann man im prinzip auch weg lassen.

    Welcher Fehler wird denn ausgegeben, wenn du -128L benutzt ?



  • Danke :), hab mich schon gewundert, weil es eben keinen Effekt hatte ob es da stand oder nicht.



  • HM, fürs erste ok, habs jetzt so gebastelt:

    FilePointer = fopen("C:\\test.mp3","rb"); 
    
      // Größe
      while (1) {
        (void) fgetc(FilePointer);
        if( feof(FilePointer) != 0) {
          break;
        }
        ulCount++;
      }
      // Größe
    
      fseek(FilePointer, ulCount-128, SEEK_SET);
    

    Ist zwar noch nicht optimal, vorallem das ermitteln der Größe dauert doch sehr lange.
    Jetzt muss ich nur nich was mit der Ausgabe (?òÌ?÷T) anfangen können *muahah*



  • Selbst wenn fseek(filepointer, -128L, SEEK_END); nicht geht, ist das eher die mieseste Lösung die du benutzen konntest. Wenn schon unbedingt nen Workaround, dann spring doch einfach mit
    fseek(fp, 0, SEEK_END);
    ans Ende, lass dir von ftell den Wert geben und rechne den minus 128. Anschliessend springst du mit
    fseek(fp, ftellwertminus128, SEEK_BEG)
    an die passende Stelle.
    Alles Andere ist eher etwas müllig.

    -junix



  • Edit, ist ok, einfach ignorieren was hier stand ^^


Anmelden zum Antworten