In Textdatei schreiben??
-
Hallo, möchte gerne in eine text datei schreiben und den neuen string immer in
einer neuen Zeile anhängen!!
so ungefähr::hallo
wie
geht uswHabe schon folgendes geschrieben:
void schreiben(char a[],char b[])
{FILE *file;
file = fopen("test.txt","at");
fputs(a,file);
fputs(b,file);
fclose(file);
}thx für eure antworten asterix
-
kannst ja einfach einen einzigen string übergeben und leerzeichen durch zeilenvorschübe ersetzen, sofern ich dich richtig verstanden habe.
-
Einen Zeilenumbruch erzeugst du durch die Ausgabe von '\n' (bzw \r\n oder \r, je nach OS afaik). Sinvoller waere es, wie Herr-Vorragend schon anmerkte, nur einen Parameter zu übergeben. Das koennte dann so aussehen:
void schreiben(char const* const a) { FILE* file; file = ::fopen("test.txt","at"); ::fputs(&a[0], file); ::fclose(file); } int main() { schreiben("Erste Zeile"); schreiben("\nZweite Zeile"); // man beachte das \n am Anfang :), du kannst es aber auch seperat ausgeben oder sogar mit //einem Aufruf der schreiben Funktion (schreiben("Erste Zeile\nZweite Zeile");) return 0; }
Falls das dein Problem war^^
Gruss,
DeSoVoDaMu
-
@DeSoVoDaMu Heißer Typ hier ist ANSI C
Die Funktion könnt so aussehen
void schreiben(char *a,char *b) // tut nichts zur sache ist die üblichere Schreibweise { FILE *file; file = fopen("test.txt","at"); // Fehlerhandling fehlt was machste wenn das file sich nicht öffnen läßt fprintf(file,"%s\n",a); // Schreibt den ersten String in das file und fügt wegen des "at" ein CR LF an fprintf(file,"%s\n",b); // Schreibt den zweiten String in das file und fügt wegen des "at" ein CR LF an fclose(file); }
Die Beschreibung der fprintf´s findest du in der Hilfe oder im Handbuch
-
@DeSoVoDaMu Heißer Typ...
lol
...hier ist ANSI C
Nur so Interesse halber: gehoert der Scope Operator nicht zu C ? OK, ich wuesste jetzt auch nicht, wo der Anwendung finden sollte, aber neu waere es mit trotzdem
Habe mir das irgendwie so angewoehnt, sryOder wo genau ist das Problem? fputs ist doch Standard
Gruss,
DeSoVoDaMuEDIT2: verschrieben
-
Meines wissens nicht.
Versuch mal deinen Compiler so einzustellen das er nur C-Code akzeptiert dann sollte '::' zu einer Fehlermeldung führen.
-
Scheinst Recht zu haben. Aber jetzt stellt sich mir eine neue Frage:
includiert man, wenn man rein C programmiert nicht auch die neuen Header der Form <c...> anstatt der alten Header der Form <....h> ? (also bsp. cstdio statt stdio.h)Die Frage stellt sich mir deswegen, weil cstdio bei mir so beginnt:
using ::size_t; using ::fpos_t; using ::FILE; using ::clearerr; using ::fclose; using ::feof; . . .
Und damit kommen in einem C-Projekt ein Haufen Fehler.
Ich programmiere eigentlich kein (reines) C, darum mag die Frage vllt dumm sein, aber interessieren tut es mich trotzdemGruss,
DeSoVoDaMu
-
Fragen die auf reinem Unwissen beruhen können nicht dumm sein
In C werden die "alten" Header mit ".h" benutzt
in C++ sollten die "neuen" C++ Header ohne ".h" benutzt werden.Ich programmiere auch keine reines C mehr, bei mir gehts anders rum. Komme von C gehe teilweise in Richtung C++