dynamisches open?



  • hallo,
    ich möchte dateien erstellen/öffnen, abhängig von einer user-eingabe.

    z.B. user gibt ein: test

    dann soll eine datei test.txt erstellt werden.
    allerdings kann man open ja keine umwandlungsbefehle übergeben..
    aber ich würde mir gerne eine open-funktion schreiben, in etwa so:

    dynamicOpen("%s.txt",O_CREAT|O_RDONLY,usereingabe);
    

    allerdings wär das denk ich nicht zu schaffen für einen anfänger wie mich, denn ich müsste ja die ganze open-funktion samt befehle wie eben O_CREAT usw neu schreiben..

    gibt es eine vordefinierte funktion für sowas, oder kombination aus funktionen, mit denen ich das realisieren kann?

    danke 🙂



  • Man müsste sogar jede Funktion umschreiben, die Strings verarbeitet. Dafür gibt's sprintf(), welche Funktion wie printf arbeitet, nur statt das Ergebnis auszugeben es in einen Puffer schreibt.



  • also scanf() ?

    dass bringt mich ja aber nicht weiter.
    es ist ja kein ding, die user eingabe abzuspeichern.

    das problem ist eben eine datei zu öffnen oder erstellen, die so heisst, wie der string den ich dann abspeicher...



  • Dafür gibt's sprintf(), welche Funktion wie printf arbeitet

    Nicht gelesen?

    Also ein Link und ein böses Gesicht, das du natürlich nicht sehen kannst.



  • oh man ich sollte nicht mehr so spät in der nacht programmieren.

    also... danke erstmal dafür 😉
    allerdings brauch ich das doch alles gar nicht :p

    ich hatte lediglich die open()-funktion etwas missinterpretiert.
    ich dachte, sie braucht als ersten parameter einen direkten string.

    also entweder

    open("test.txt",...)
    

    oder halt wie bei printf etwas formatiertes, eben:

    char dateiname[10];
    ...
    open("%s",...,dateiname)
    

    dass ich direkt machen kann:

    open(dateiname,...)
    

    hab ich schlichtweg verplant, hab das noch nie gemacht, hab bisher die namen immer direkt eingegeben eben.

    also sorry war ein übler flüchtigkeitsfehler.. trotzdem danke 😃



  • oh man ich sollte nicht mehr so spät in der nacht programmieren.

    Mir kommen die wirklich guten Ideen seltem vorm Morgengrauen (wenn überhaupt).

    ich dachte, sie braucht als ersten parameter einen direkten string.

    Dann bist du gerade in der beneidenswerten Phase, der vielzitierten Eleganz von C auf den Grund zu kommen. Manche (wie ich) kommen da nie wieder raus. 🙂



  • total übermüdet... schrieb:

    ich hatte lediglich die open()-funktion etwas missinterpretiert.
    ich dachte, sie braucht als ersten parameter einen direkten string.

    also entweder

    open("test.txt",...)
    

    oder halt wie bei printf etwas formatiertes, eben:

    char dateiname[10];
    ...
    open("%s",...,dateiname)
    

    man sagt, wer lesen kann, ist klar im Vorteil. Bitte dran denken.

    Ansonsten ist mein Rat: im Zweifel immer die Dokumentation lesen: man: open(2). An welcher Stelle steht es da, dass open einen zustätzlichen String-Parameter am Ende bekommen kann?



  • cheopz schrieb:

    ...der vielzitierten Eleganz von C auf den Grund zu kommen.

    Wovon träumst du denn nachts? 😮



  • Wovon träumst du denn nachts? 😮

    Von nackten Zeigern.



  • Von nackten Zeigern.

    zu geil 🕶

    @supertux:

    in der documentation von open() steht eben nirgendswo, dass es einen parameter übergeben bekommen kann.
    das war mir ja klar, daher die frage nach einem dynamischen open
    (mein code oben mit parameter war ja pseudo-code)



  • dann musst dir etwas eigenes basteln. Siehe man: stdarg(3)


Anmelden zum Antworten