Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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;

}

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

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

Okay, jetzt läufts perfekt :D. Vielen Dank allerseits.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.