Forum: PC-Programmierung C-Programm Dateinamen übergeben


von Hans Martin (Gast)


Lesenswert?

Hallo.

Ich habe ein Programm, das soll Daten in eine Datei schreiben. Jedoch
soll der Dateiname eingelesen werden.

Mein Problem ich bekomme es weder unter C noch unter C++ hin den
Dateinamen an fopen zu übergeben oder fprintf oder sonstiges. Ich habe
sehr viele Ansätze gefunden aber nie hat jemand mal dazu geschrieben
welche Bibliothek man dazu braucht, oder wie man den Befehl
entsprechend benutzt.

gehört habe ich jetzt von Befehlen wie cout, cin, einer hat mit dem
Befehl Ansistring einen temporären String erzeugt mit dem er gearbeitet
hat, aber niemand hat gesagt welche Libaries man dafür braucht :-(.

Über allgemeine Lösungen im Bereich von C wäre ich sehr sehr dankbar,
wie man den Dateinamen in einem String einliest und dann diesen an
fopen oder fprintf oder wie auch immer gibt, damit ich dann Ergebnisse
in die Datei speichern kann, danke und Gruß Martin.

von Roland P. (pram)


Lesenswert?

Wo hakts denn? Poste mal Code wie weit du kommst.

Google:
- man fopen
- fopen example

Gruß
Roland

von Karl H. (kbuchegg)


Lesenswert?

> Mein Problem ich bekomme es weder unter C noch unter C++ hin
> den Dateinamen an fopen zu übergeben oder fprintf oder sonstiges

Na, ja. So schwer ist das auch wieder nicht:

int main()
{
  char Dateiname[256];

  /* Irgendwo muss jetzt der Dateiname herkommen.
     Der Einfachheit halber kopiere ich ihn mal
     nach 'Dateiname'. Du kannst den auch vom Benutzer
     einlesen oder was auch immer */

  strcpy( Dateiname, "C:\\test.txt" );

  /* und jetzt der fopen. */
  fopen( Dateiname, "r" );

}

Wo liegt denn da das Problem? Du definierst dir einen
string (als char Array, wie unter C üblich) und übergibst
das ganz einfach an fopen.

VIelleicht wäre ein Einführungsbuch zur Programmierung in C
mal eine tolle Investition.

von Rolf Magnus (Gast)


Lesenswert?

> Jedoch soll der Dateiname eingelesen werden.

Von wo?

> Mein Problem ich bekomme es weder unter C noch unter C++ hin den
> Dateinamen an fopen zu übergeben oder fprintf oder sonstiges.

Wie versuchst du's denn? Was passiert bei dem Versuch?

> Ich habe sehr viele Ansätze gefunden aber nie hat jemand mal dazu
> geschrieben welche Bibliothek man dazu braucht, oder wie man den
> Befehl entsprechend benutzt.

Für fopen und fprintf braucht man keine spezielle Bibliothek. Die
Funktionen ("Befehle" gibt's in C eigentlich nicht) sind Teil der
C-Standardbibliothek, die in der Regel automatisch gelinkt wird.

> gehört habe ich jetzt von Befehlen wie cout, cin,

Das sind Objekte. Sie sind Teil der C++-Standardbibliothek und
existieren in C nicht.

> einer hat mit dem Befehl Ansistring einen temporären String
> erzeugt mit dem er gearbeitet hat, aber niemand hat gesagt welche
> Libaries man dafür braucht :-(.

Ich habe keine Ahnung, was "Ansistring" ist und zu welcher Bibliothek
es gehört.

> Über allgemeine Lösungen im Bereich von C wäre ich sehr
> sehr dankbar, wie man den Dateinamen in einem String einliest

Nochmal: von wo willst du ihn lesen?

> und dann diesen an fopen oder fprintf oder wie auch immer gibt,

An fprintf gibts du den Dateinamen nicht, außer, wenn du ihn in eine
Datei schreiben willst. Zuerst muß die Datei mit fopen geöffnet werden.
Diese gibt dir einen FILE* zurück, den du dann benutzt, um die Aktionen
(z.B. fprintf) durchzuführen. Am Ende schließt du die Datei mit fclose
wieder. Wie die Funktionen aufzurufen sind, steht normalerweise im
Handbuch des Compilers.

von Bartli (Gast)


Lesenswert?

> Ich habe keine Ahnung, was "Ansistring" ist und zu welcher
Bibliothek es gehört.

Vermutlich eine Erfindung von Borland.

von tastendrücker (Gast)


Lesenswert?

Aus der DSTRING.H (Borland C++ Builder):

/--
AnsiString: String class compatible with Delphi's Native 'string'
type

--/

von Klaus Kehrer (Gast)


Lesenswert?

Welchen Compiler nimmst Du?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.