Von stdin in txt Datei schreiben
-
Das Problem ist das in der Datei dann nichts drin steht. Wenn ich anstelle einer txt Datei, sdtout als Ausgabe verwende funktioniert es.
-
Benutz doch einfach die C++ Filestreams
Text aus der Konsole in eine Datei schreiben geht zum Beispiel so:#include <iostream> // Für std::cin #include <fstream> // Für std::ofstream #include <iterator> // Für std::istream/ostream_iterator #include <algorithm> // Für std::copy int main() { std::ofstream file("file.txt"); std::copy(std::istream_iterator<char>(std::cin), std::istream_iterator<char>(), std::ostream_iterator<char>(file)); }
Edit: Zu langsam, C.
-
int main(int argc, char *argv[]) { char buf[0x100] = {0}; FILE *file; if (argc < 2) return -1; file = fopen(argv[1], "wt"); if (!file) return -1; while (strcmp(buf, "exit\n") != 0) { fgets(buf, sizeof(buf), stdin); fputs(buf, file); } fclose(file); return 0; }
-
Wenn ich den Code verwende kommt bei mir immer Speicherzugriffsfehler.
-
Sorry, habe peinlicherweise noch debug Zeugs angehabt, probiers jetzt noch mal. (Code oben editiert.)
-
Hm, funktioniert net
-
Krol schrieb:
Hm, funktioniert net
Was genau funktioniert denn nicht? Immernoch der gleiche Fehler? Kompilierst du wirklich genau diesen Code?
-
Copy&Paste
Oh man, ein wenig mitdenken sollte die Fraktion schon.
Schaut mal den Code eurer "Hallo World" und vergleicht das mit den hier gezeigten Quelltexten
Das ist das übliche Missverständnis in diesen FällenMfG f.-th.
-
Das Problem ist das ich string.h nicht benutzen darf.
-
Es geht dir doch nur um strcmp, oder? Das ist recht schnell selber geschrieben:
int mystrcmp(const char* p1, const char* p2) { while(*p1 && *p2 && *p1==*p2) { ++p1; ++p2; } return *p1-*p2; }
Wenn dir das zu frickelig aussieht, kannst du auch die Längen der Zeichenketten bestimmen (würde eine seperate Funktion mystrlen bedeuten),und das Ganze in eine for-Schleife packen, in der dann die einzelnen Zeichen verglichen werden.
Edit: Ein paar Wörter können so nicht stehen bleiben...
Edit2: Argh, durchstreichen reicht nicht..