Setdisk() von dos.h funktioniert nicht

Hi!

Ich habe ein C-Programm mit folgendem Code geschrieben:

#include 
#include 

int main()
{
    printf("Momentanes Laufwerk: %c\n", getdisk()+'A');
    setdisk(2);
    printf("Jetziges Laufwerk: %c", getdisk()+'A');
    return 0;
}

Das Programm liegt in dem Ordner „D:\dm\bin\diskset.exe“ und ich arbeite mit dem Digital Mars Compiler und Windows 8.1. Da ich ein DOS-Programm haben will, kompiliere ich mit folgendem Befehl:

dmc -ms diskset.c

Die Kompilierung läuft fehlerfrei.

Wenn ich das Programm aber ausführe (in der DOSBox, da ich 64 Bit habe), bekomme ich nur folgende Ausgabe:

Momentanes Laufwerk: D
Jetziges Laufwerk: D

Der setdisk(2)-Befehl bewirkt also nichts, obwohl ja eigentlich ausgeben werden müsste, dass ich mich auf Laufwerk C befinde.

Komischerweise funktioniert der Befehl, wenn ich auf Laufwerk A oder B zugreifen will, die auf meinem System aber gar nicht existieren. Der Befehl funktioniert aber auch nicht, wenn ich auf Laufwerk E zugreifen will, das es aber eigentlich gibt.

Wie kann ich jetzt also doch auf Laufwerk C oder E zugreifen?
Über eine hilfreiche Antwort wäre ich sehr dankbar.

Gruß,
nano99

Hallo nano99

Versuche doch mal:

system("setdisk(2)");

DOS-Befehle werden grundsätzlich so abgeschickt. Weiss jetzt nicht genau, welchen Header die system() so braucht, ich glaube stdlib.h.

mfG
Martin

Hi Martin,

Versuche doch mal:

system(„setdisk(2)“);

das würde nur funktionieren, sofern es einen DOS Befehl mit Namen setdisk geben würde. Das ist aber nicht der Fall. Leider kann ich das Genannte nicht nachstellen, da ich keine DOS Umgebung mehr in Betrieb habe. Deswegen kam auch bisher keine Antwort von mir.

Gruss
E.

ich kann mir nur vorstellen das es was mit dem
FAT System zu tun hat. setdisk geht wohl nur für FAT .
woher das getdisk sein infos bekommt weiss ich auch nicht .

Hi!

Erstmal vielen Dank für eure Antworten, doch ich habe mittlerweile die Lösung selbst gefunden. Ich habe nämlich das Programm auf meinen Taschenrechner (Casio Algebra FX 2.0 Plus) übertragen, auf dem das Betriebsystem „Datalight ROM-DOS 6.22“ läuft. Und dort funktioniert das Programm fehlerfrei! Also liegt es wahrscheinlich wirklich an dem Dateisystem, da ich auf meinem Computer natürlich NTFS und nicht FAT benutze.

Gruß,
nano99