C - Textdatei erstellen, wenn...

Phoney

Grünschnabel
Hallo,
ich möchte mit einem C-Programm eine Textdatei einlesen und in diesen Text in eine andere kopieren.
Hier dafür der Quelltext:

Code:
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *in, *out;
char c, *einfile, *ausfile;
int i;
if (argc == 2)
{
einfile = argv[1];
ausfile = "project3.txt";
printf("\n\n Wird bearbeitet %s\n", einfile);
in = fopen(einfile, "r");
out = fopen(ausfile,"w");
if (in == NULL)
{
printf("\n Datei %s existiert nicht,\n", einfile);
i = 0;
}
else
{
while (!feof(in))
{
c=fgetc(in);
fputc(c, out);
}
fclose(in);
fclose(out);
i=1;
}
return(i);
}
else
{
printf("\n falsche anzahl von parametern!\n");
}
}

Ist nicht schön geschrieben, aber ich hoffe, dass ihr mir das nicht so übel anrechnet.

Jedenfalls möchte ich, dass er den Text der 2. Textdatei(aus der das Programm liest) in die Erste(Project3.txt) nur schreibt, wenn diese noch nicht vom Programm erstellt wurde.

Also quasi soll man das Programm nur ausführen können, wenn es Project3.txt noch nicht gibt! Ich möchte dadrin kein remove-Befehl haben.
Gibt es da eine Möglichkeit, wie man testen kann, ob eine Textdatei schon existiert?
Wäre nett, wenn ihr mir bei meinem Problem helfen würdet.
Vielen Dank schon im Vorraus.
mfG
 
Zuletzt bearbeitet von einem Moderator:
So funktionierts vielleicht, aber ich möchte ja prüfen, ob es die projekt3.txt schon gibt
und genau das kriege ich ja nicht hin...
 
Zuletzt bearbeitet:
Also in Chris Vorschlag ist deine Lösung enthalten...

fopen() liefert dir beim erfolgreichen öffnen einen Stream auf dein File zurück.
Wenn dieses nicht geöffnet werden konnte weil es nicht existiert oder aus welchen
Gründen auch immer ist der Rückgabewert von fopen() NULL und die Variable errno
wird gesetzt die du dann auf den ganeuen Fehler abfragen kannst. Bitte schau dir auch
die Manual Page zu fopen an.


Gruß

RedWing
 
Zuletzt bearbeitet:
Ich weiß wohl, wie fopen funktioniert...Trotzdem kriege ich es nicht hin :(
ich will ja sagen, er soll die zu schreibende Datei öffnen, wenn diese halt noch nicht erstellt wurde... und das passiert ja mit fopen...
 
Also du machst:

Code:
FILE *fp;
fp = fopen("Projekt3.txt", "r");

Das heisst, dass du die Datei im lesen modus öffnen willst.
Wenn es die datei "Projekt3.txt" noch nicht gibt, dann ist fp nach dem fopen gleich NULL

Also fragst du ab:

Code:
if (fp == NULL)
{
    // dann gibt es die Datei noch nicht
    // mach halt irgendwas
}

alles klar?
 
Also die man Page zu fopen sagt mir dazu folgendes:

Code:
 a+     Open for reading and appending (writing at  end  of
                     file).   The  file is created if it does not exist.
                     The stream is positioned at the end of the file.

Also einfach:

Code:
FILE *fp;
fp = fopen(filename, "a+");

Und deine Probleme sollten gegessen sein.
Für eine weitere Fehlerbehandlung haben meine Vorgänger schon alles gesagt.

Gruß

RedWing
 
Zurück