variable in fopen

Dieses Thema im Forum "C/C++" wurde erstellt von sim4000, 28.11.2006.

  1. #1 sim4000, 28.11.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Guten Tag Linuxgemeinde.

    Vorwort: Bitte nicht mir gleich wieder an den Hals springen. Weiß immer nich wo nach ich suchen sol...
    Also: Mal wieder ein Problemchen. Ich hab zwei string-Variablen (Davon ist einer ein Array). Eine Fragt den dateinamen ab, und die andere die dateiendung.

    Das sieht so aus:
    Code:
    void erstellen(void) {
    string datei = dateinamen[ersteller] + "." + dateityp;
       do{
         FILE* oeffnen;     // ein File-Poiinter wird erstellt
         oeffnen = fopen(datei, "w");
         fclose(oeffnen); // Datei wieder schließen
         ersteller--;
       } while(ersteller!=0);
    }
    Die beiden variablen werden wie oben ja gezeigt, in einen Dateinamen umgewandelt.
    Also aus "name" und ".cpp" wird name.cpp. Das soll jetzt in fopen eingespeisst werden, damit dieser eine Datei mit dem dateinamen datei.cpp erstellt. Und da ist der Hacken. Was muss ich mach damit es klappt. Ich kann auch mit der Fehlermeldung vom Compiler nicht viel anfangen...

    Code:
    sim4000@sim2:~/Desktop> g++ fileadder.cpp
    fileadder.cpp: In function »void erstellen()«:
    fileadder.cpp:62: Fehler: »std::string« kann nicht nach »const char*« für Argument »1« nach »FILE* fopen(const char*, const char*)« umgewandelt werden
    Kann mir mal jemand bitte helfen?
    Mfg, sim4000.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    die Funktion c_str() wandelt Dir den string in einen char* um:
    Code:
    oeffnen = fopen(datei.c_str(), "w");
    
    [klugscheiss]
    Weshalb mischst Du C und C++-routinen? Es gibt doch ifstream unter C++ (wofuer Du allerdings immernoch c_str() benoetigst).
    Und Du benutzt doch nicht etwa globale Variablen? Oder ist das Codefragment nur unvollstaendig?
    [/klugscheiss]
     
  4. #3 root1992, 28.11.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    das liegt glaube ich nicht an fopen. Bei C++ benutzt man ja eigentlich fstream, hab ich dir doch ein BSP geschickt ;)

    Kannst du den String 'datei' mit cout ausgeben ohne fehler wenn ja, dann wandel es mal in einen CArray um. Ansonsten STL, da müsste es drinnen sein oder? sowas wie strcat, ...

    //Edit mist 2.er
     
  5. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    Nun, wie es schon in der Fehlermeldung steht, hat der Compiler keine Ahnung wie er einen string in einen const char* (den fopen erwartet) konvertieren soll. :D

    Schreib' in fopen einfach "datei.c_str()"

    Eine schöne Übersicht über C++ String findest Du hier: http://www.cppreference.com/cppstring/index.html

    Gruss
    Heiko

    Edit: Oh'man, sind die hier aber fix :-)
     
  6. #5 sim4000, 28.11.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Weiß ich nicht. Ich hab ein Beispiel wie dieses im Netz gefunden, und einfach mal getestet. und es hat gefunzt.

    Doch 4 stück. Da die in mehreren Funktionen gebraucht werden. Schlimm?

    Mfg, sim4000.
     
  7. #6 root1992, 28.11.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Naja, kleiner Tipp:
    new, delete, namespace, ...
     
  8. #7 rikola, 28.11.2006
    Zuletzt bearbeitet: 28.11.2006
    rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Globale Variablen sind ein Albtraum, v.a., wenn der Code groesser wird und/oder Du Code von anderen Leuten bearbeiten musst.
     
  9. #8 sim4000, 28.11.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Ich weiß ich weiß.
    Ist mir eben grad nach abschicken des Beitrags wieder eingefallen.

    Hab in der Schule grad Objekte. Wenn ich das richtig drauf hab änder ich das. Aba das Programm ist ja noch nicht sehr gross...

    Mfg sim
     
  10. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Das erzaehlt einem zwar jeder Opa, aber: Die Warnung vom falschen Angewoehnen hat durchaus seine Berechtigung. Klar sagt man sich, dass mans jetzt so und spaeter "richtig" macht, aber vielleicht ging bis dahin alles glatt und spaeter denkt man "Naja, das mit den globalen Variablen hat doch bisher immer funktioniert, da koennt ich doch...".
    Natuerlich nicht nur auf dieses Beispiel beschraenkt...
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 sim4000, 04.12.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Vielleicht. Aber nicht in meinem Fall. Ist schon lange geändert.
    Hab Klassen in das Programm eingebaut.
    Hat sich also offiziell mit den Globalen Variablen erledigt.

    Mfg, sim.
     
  13. #11 root1992, 20.01.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Danke rikola ;)
     
Thema:

variable in fopen

Die Seite wird geladen...

variable in fopen - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...