Zum Inhalt springen

Name der Ausgabedatei zur Laufzeit festlegen


Empfohlene Beiträge

Geschrieben

Hallo allerseits!

Ich habe ein kleines Problem: Meine Simulation schreibt per fprintf(datei,...) Daten in eine Datei, die ich per datei=fopen("Dateiname","a+") geöffnet habe. Wenn ich jetzt dieses Programm aber mehrmals zur gleichen Zeit, aber mit unterschiedlichen Parametern starte (ist notwendig, weil der Rechner an der Uni steht und oft über Nacht oder über Wochenende läuft, wenn ich nicht da bin; wenn ich das Programm nur einmal starte, ist er dann vielleicht samstag morgen fertig und tut den Rest des Wochendes nichts), dann schreiben die Programme munter in der Datei durcheinander, und ich kann die Daten wegwerfen.

Deswegen meine Frage: Gibt es eine Möglichkeit, wie ich den Namen der Ausgabedatei erst zur Laufzeit festlegen kann? Etwa so, wie ich mit scanf die Parameter für das Programm einlese?

Wäre für Hilfe wirklich dankbar.

Zobelzahn

Geschrieben

ich würds mit der Zeit machen

char x[100];

string answ;

time_t zeit;

time(&zeit);

strftime(x,99,"%c",localtime(&zeit));

answ= x;

ofstream dat_aus;

string dateiname="C:\\...";

dateiname+=answ;

dateiname+=".txt"

dat_aus.open(dateiname.c_str(), ios_base::out)

dat_aus...

valle

Geschrieben

also ich würd es so machen... dann einfach als nächsten parameter eingeben und schon kannst es per kommandozeile beim aufruf mit angeben... wies flashpixx schon gesagt hat...

int main(int argv, char *argc[])

{

char datName[128];

if(argv<2)

{

printf("Zu wenig Parameter...\n");

return 1;

}

else

sprintf(datName,"%s",argc[1]);

printf("Der Name der Datei heißt: %s\n", datName);

return 0;

}

Geschrieben

Ok, danke für die Antworten.

@Valle: Dein Vorschlag scheint C++ zu sein. Jedenfalls kennt mein Compiler eine Menge der Befehle nicht. Habe vergessen zu erwähnen, dass ich in C schreibe, sorray.

@Micha82: Funktioniert so leider auch noch nicht. Bei

if(argv<2)

meckert mein Compiler rum: "comparison between pointer and integer"

und bei

sprintf(datName,"%s",argc[1]);

"subscripted value is neither array nor pointer"

Ich kapier das ohnehin nicht so ganz mit dem Parameter-Übergeben per Kommandozeile. Bisher wusste ich gar nicht, dass so etwas möglich ist. Tut mir Leid, dass ich mich da unpräzise ausgedrückt habe, aber mit Parameter meinte ich Simulationsparameter, also im Programm deklarierte Variablen. Ich bin halt Physiker und kein Informatiker.

Zobelzahn

Geschrieben (bearbeitet)

huuuuuuuuuuuuuuuups :upps

edit:

int main(int argc, char *argv[])

{

char datName[128];

if(argc<2)

{

printf("Zu wenig Parameter...\n");

return 1;

}

else

sprintf(datName,"%s",argv[1]);

printf("Der Name der Datei heißt: %s\n", datName);

return 0;

}

:P :p :P

und dann beim programm aufruf zb: ./programmname dateiname.txt

dann steht in der:

argc die Anzahl der Argumente... in meinem Beispiel 2 (einmal der programmname und dann der dateiname mit endung)

argv[] an 0-Stelle programmname und 1-Stelle dateiname.txt

Bearbeitet von Micha82

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...