Programm erzeugt keine Datei
Programm erzeugt keine Datei
Hallo,
und zwar habe ich folgendes Problem. Ich möchte gerne über die DOS Konsole ein Programm, welches ich in C geschrieben habe öffnen. Dies funktioniert so weit auch. Jedoch soll das Programm eine Textdatei erstellen. Diese Textdatei wird beim Aufruf über die Konsole jedoch nicht erstellt. Über den Debugger im Programm selbst funktioniert dies aber einwandfrei. Hat jemand eine Idee woran dies liegen könnte?
und zwar habe ich folgendes Problem. Ich möchte gerne über die DOS Konsole ein Programm, welches ich in C geschrieben habe öffnen. Dies funktioniert so weit auch. Jedoch soll das Programm eine Textdatei erstellen. Diese Textdatei wird beim Aufruf über die Konsole jedoch nicht erstellt. Über den Debugger im Programm selbst funktioniert dies aber einwandfrei. Hat jemand eine Idee woran dies liegen könnte?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Re: Programm erzeugt keine Datei
Hallo pratio!
Ich würde dir empfehlen Debug-Ausgaben zwischen den fopen() und fprintf() Aufrufen einzufügen:
Dafür brauchst du noch folgende beiden Includes:
Eventuell suchst du nicht im richtigen Verzeichnis? Die Datei wird im aktuellen Arbeitsverzeichnis angelegt, das ist (besonders wenn du eine Entwicklungsumgebung verwendest) nicht notwendigerweise das Verzeichnis in dem das von dir erstellte Programm liegt.
Ansonsten möchte ich dich bitten deinen Code vollständig als Text zwischen Code-Tags zu posten. Bei Bildern müssen andere deinen Code erst abtippen, um ihn testen zu können
Ich würde dir empfehlen Debug-Ausgaben zwischen den fopen() und fprintf() Aufrufen einzufügen:
Code: Alles auswählen
if (fp == NULL)
printf("error creating file: %s\n", strerror(errno));
else
printf("file created successfully\n");
Code: Alles auswählen
#include <string.h>
#include <errno.h>
Ansonsten möchte ich dich bitten deinen Code vollständig als Text zwischen Code-Tags zu posten. Bei Bildern müssen andere deinen Code erst abtippen, um ihn testen zu können

- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Programm erzeugt keine Datei
Bitte benutz als Mode mal "w+" statt nur "w".
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Programm erzeugt keine Datei
Vielen Dank schon mal für eure Hilfe.
@nufan "file created sucessfully" wurde zwar ausgegeben, aber eine Datei wurde trotzdem nicht erstellt
@Xin das w+ hatte leider keine Auswirkungen auf die Erstellung der Datei
@nufan "file created sucessfully" wurde zwar ausgegeben, aber eine Datei wurde trotzdem nicht erstellt
@Xin das w+ hatte leider keine Auswirkungen auf die Erstellung der Datei
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Programm erzeugt keine Datei
Das ergibt so keinen Sinn.
In welchem Verzeichnis rufst Du das Exe auf...?
Kopier mal den Inhalt der DOS-Box bitte in die Antwort. Ruf das Exe auf und anschließend mal "dir test.txt". Alles kopieren, inkl. dem, was vor dem Aufruf des Executables steht, also dem Eingabeprompt.
Wenn die Änderung "file created successfully" ausgegeben wird, können wir davon ausgehen, dass die Datei, die Du aufrufst tatsächlich das neu gebaute Executable ist und Du dort auch Schreibrechte hast.
In welchem Verzeichnis rufst Du das Exe auf...?
Kopier mal den Inhalt der DOS-Box bitte in die Antwort. Ruf das Exe auf und anschließend mal "dir test.txt". Alles kopieren, inkl. dem, was vor dem Aufruf des Executables steht, also dem Eingabeprompt.
Wenn die Änderung "file created successfully" ausgegeben wird, können wir davon ausgehen, dass die Datei, die Du aufrufst tatsächlich das neu gebaute Executable ist und Du dort auch Schreibrechte hast.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Programm erzeugt keine Datei
Der Code:
DOS-Konsole:
Edit by Xin: CodeTags hinzugefügt
Code: Alles auswählen
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable : 4996)
int main()
{
FILE* fp;
char filename[] = "test.txt";
char mode[] = "w";
fp = fopen(filename, mode);
if (fp == NULL)
printf("error creating file: %s\n", strerror(errno));
else
printf("file created successfully\n");
fprintf(fp,"please write this: hallo");
fclose(fp);
}
Code: Alles auswählen
C:\Users\User>C:\Users\User\Documents\Allgemein\C-Programme\Dateien_beschreiben\Dateien_beschreibensll\Debug\Dateien_beschreiben.exe
file created successfully
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Programm erzeugt keine Datei
Dann guck jetzt bitte mal in C:\Users\User - da sollte die Datei liegen. Das ist das Verzeichnis in dem die test.txt liegt.
Wie gesagt: "dir test.txt"
Wie gesagt: "dir test.txt"
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Programm erzeugt keine Datei
C:\Users\User>dir test.txt
Datenträger in Laufwerk C: ist Windows10
Volumeseriennummer: ACAE-75BD
Verzeichnis von C:\Users\User
22.05.2020 17:27 24 test.txt
1 Datei(en), 24 Bytes
0 Verzeichnis(se), 424.962.396.160 Bytes frei
Das kommt da jetzt, aber ich weiß nicht in welchem Verzeichnis das jetzt sein soll
Datenträger in Laufwerk C: ist Windows10
Volumeseriennummer: ACAE-75BD
Verzeichnis von C:\Users\User
22.05.2020 17:27 24 test.txt
1 Datei(en), 24 Bytes
0 Verzeichnis(se), 424.962.396.160 Bytes frei
Das kommt da jetzt, aber ich weiß nicht in welchem Verzeichnis das jetzt sein soll
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Programm erzeugt keine Datei
Na, in dem Verzeichnis, in dem die Shell ist, während Du das Programm aufrufst, was sich in einem ganz anderen Verzeichnis befindet. Deswegen hast Du ja auch den Pfad vor der Exe. Aber das Ausführungsverzeichnis steht in der DOS-Box vor dem Befehl: "C:\Users\User>"
Wenn Du "dir" aufrufst wird das ja auch nicht da aufgerufen, wo das Programm dir.exe steht, sondern arbeitet sich in dem Verzeichnis durch, in dem die DOS-Box steht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Programm erzeugt keine Datei
Du bist der beste, ich habe es jetzt. Vielen Dank.
Ich hätte noch eine kleinere weitere Frage, wenn es ok ist. Und zwar würde ich gerne den Namen der Datei auch über die Konsole eingeben können. Überlegt habe ich mir folgendes:
Die Übergabe an das filename funktioniert aber nicht und ich weiß nicht, wie ich das argv[1] an das filiname[] richtig übergebe
Edit by Xin: CodeTags eingefügt
Ich hätte noch eine kleinere weitere Frage, wenn es ok ist. Und zwar würde ich gerne den Namen der Datei auch über die Konsole eingeben können. Überlegt habe ich mir folgendes:
Code: Alles auswählen
int main(int argc, char** argv[])
{
FILE* fp;
char filename[] = argv[1];
char mode[] = "w";
fp = fopen(filename, mode);
if (fp == NULL)
printf("error creating file: %s\n", strerror(errno));
else
printf("file created successfully\n");
fprintf(fp,"please write this: hallo");
fclose(fp);
}
Edit by Xin: CodeTags eingefügt