[Linux]CD-ROM audioplay Problem



  • LinuxFanatic schrieb:

    toc_entry.cdte_track = 4;
     toc_entry.cdte_format = CDROM_MSF;
    

    klappt es! Das Programm spielt direkt ab 4 ab...

    Wieso kann ich die Zahl nicht per Variable übergeben?

    Was meinst du damit?

    Bir mir geht es auch, nur die Mucke ist viel zu Leise und mit Strg+C habe ich zwar das das Programm beendet aber die Mucke läuft weiter!



  • @supertux:
    Das Programm beendet sich bei mir mit einem Druck auf Enter und die Mucke hört auf. 😃

    Ich habe noch ein bißchen herumprobiert: Wenn ich count deklariere und oben schon eine Zahl zuweise, dann klappt auch die Übergabe an die Struktur und das Abspielen beginnt mit dem Stueck, welches ich in count festgelegt habe. Damit, kingruendi dürfte sich auch der Debugger erübrigen, oder?

    Das Problem liegt also in

    printf("\nMit welchem Stück soll begonnen werden?\n");
     scanf("%d", &count);
    

    Aber wieso? Wo ist da die Logik? Wieso kann ich die Drecksvariable nicht einlesen und dann übergeben?

    😞

    Gruß



  • wieso hat sich der debugger erledigt? Lass dir doch mal den Wert von count angeben, nachdem du es eingelesen hast.



  • Also der Debugger ddd bestätigt mir, das count richtig übergeben wird.
    toc_entry.cdte_track hat den Wert den ich ihm über count zuweise...

    Verstehe das einer?

    Gruß



  • LinuxFanatic schrieb:

    Also der Debugger ddd bestätigt mir, das count richtig übergeben wird.
    toc_entry.cdte_track hat den Wert den ich ihm über count zuweise...

    Verstehe das einer?

    Gruß

    Um ehrlich zu sein, nein! Ich hab selber (mit deinem Code) erweitert und dann ging es nicht mehr. Die Variable war zwar richtig, aber warum es nicht funktioniert ist ein Rätsel für mich.



  • @Supertux:
    Schade! Aber trotzdem danke für deine Mühen. 🙂

    Ich hoffe irgendjemand hier kann mir da weiterhelfen und den Denkfehler (so es einer ist) aufklären...

    Gruß



  • Das ist ganz einfach!!!!! 💡
    Dein Problem liegt nicht in dem scanf(), sondern im getchar() kurz vor Schluss!

    scanf("%d",...) liest nur die Integer-Zahl ein, das "\n" bleibt stehen. Genau das findet aber getchar() dann und beendet das Programm sofort.

    scanf() kann schon manchmal tückisch sein...

    Nimm statt scanf("%d",...) lieber fgets() + sscanf(buffer, "%d",...)
    oder werf mal einen Blick in mein Buch "C und Linux" 😉

    Martin



  • Martin G schrieb:

    scanf("%d",...) liest nur die Integer-Zahl ein, das "\n" bleibt stehen. Genau das findet aber getchar() dann und beendet das Programm sofort.

    Martin

    Natürlich, du hast Recht, hab nicht daran gedacht!

    Besser wäre da fgets zu benutzen, das holt nämlich alles.



  • oder "%d\n" als Formatstring



  • VIELEN DANK! 🙂

    Und Herr Gräfe, Ihr Buch habe ich hier liegen! Kann ich Ihnen direkt noch sagen, daß es mir sehr gefällt und ich es jederzeit wieder kaufen würde.

    Danke!

    LinuxFanatic


Anmelden zum Antworten