einfache ein text in .txt schreiben ohne viel aufwand (C)
-
Danke , jetzt kann ich reinschreiben
aber was ich vorhab klapt leider nochnicht so ganzhier ist mein code
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> int main(int argc, char *argv[]) { FILE * file = fopen("ausgabe.txt", "w"); char eingabe[256]; printf("Text: "); scanf("%s",&eingabe[0]); fprintf(file,&eingabe[0] ); fclose(file); return 0; }problem: es wird nur bis zum punkt eingetragen bis ich leertaste drücke:
so z.b:
eingabe: Hallo Welt -> in der Txt: Hallo
eingabe: HalloWelt -> in der Txt: HalloWeltweis einer warum ?
-
Danke , jetzt kann ich reinschreiben
aber was ich vorhab klapt leider nochnicht so ganzhier ist mein code
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> int main(int argc, char *argv[]) { FILE * file = fopen("ausgabe.txt", "w"); char eingabe[256]; printf("Text: "); scanf("%s",&eingabe[0]); fprintf(file,&eingabe[0] ); fclose(file); return 0; }problem: es wird nur bis zum punkt eingetragen bis ich leertaste drücke:
so z.b:
eingabe: Hallo Welt -> in der Txt: Hallo
eingabe: HalloWelt -> in der Txt: HalloWeltweis einer warum ?
-
Das liegt an der Art und Weise wie scanf() einliest. %s heißt da offenbar nur das nächste String-Token, und das geht offenbar bis zum ersten Whitespace.
Meine Lösung: Verwende stattdessen getline()
Wobei meine ANSI-C-Kenntnisse nicht am aktuellen Stand sind und es durchaus sein kann, dass es bessere Wege gibt. Ich verschiebe dich mal ins Fachforum

MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
SideWinder schrieb:
getline() [...]
ANSI-C-Kenntnisse
fgets(eingabe, sizeof(eingabe), stdin);
-
cooky451 schrieb:
fgets(eingabe, sizeof(eingabe), stdin);
Hier ist meistens das '\n' enthalten, für nachfolgende Stringverabeitung meistens unerwünscht und benötigt Extrabehandlung. Deshalb einfach:
int main(int argc, char *argv[]) { FILE * file = fopen("ausgabe.txt", "w"); char eingabe[256]; printf("Text: "); scanf("%255[^\n]",eingabe);while('\n'!=getchar()); fputs(eingabe,file); fclose(file); return 0; }
-
Danke
genau sowas hab ich gesucht!nur was hat was zu bedeuten ?
%255[^\n] :Pund
'\n'!=getchar()
wie komplizirt
-
kann ich jetzt auch wieder abfragen ??

if eingabe == a -> mache was
okey ich könnte das sample von cprogrammieren.com nehen und mal gucken ... melde mich später mal zurück
-
255 ist die Länge deines Strings. Mehr darfst du nicht einlesen. [^\n] ist ein regulärer Ausdruck, der besagt, dass kein \n = Zeilenumbruch gelesen werden soll.
'\n' != getchar()liest ein Zeichen ein und vergleicht es mit dem Zeilenumbruchszeichen.
Und statt&eingabe[0]kannst du auch einfacheingabeschreiben.
-
%255[^\n]Liest bis ausschließlich des '\n' Zeichens (d.h. bis unmittelbar davor) alle vorhandenen Zeichen aus dem Eingabestream, aber max. 255 Stück. (in 'eingabe' ist nur Platz für 255 Zeichen, d.h. für das von scanf immer abschließend gesetzte '\0' Zeichen muss noch Platz bleiben)
D.h. danach steht '\n' definitiv noch im Eingabestream und sollte weggeräumt werden, damit folgende Eingabeabfragen nicht darüber stolpern.Durch
while('\n'!=getchar());wird solange bis zum Auftreten von '\n' aus dem Eingabestream gelesen, d.h. es werden alle evtl. auch noch 'vor' '\n' im Eingabestream vorhandenen Zeichen und einschließlich '\n' abgeräumt.
-
achso, danke - und wie mache ich jetzt das ich eine abfrage der buchstaben bekomme,
ohne das ich jeden buchstabe als char setzen muss ?sample:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> char a[] = {"a"}; int main(int argc, char *argv[]) { char eingabe[256]; printf("Text: "); scanf("%255[^\n]",eingabe); if(eingabe == a) { printf("hallo"); Sleep(1000); } return 0; }ich mein:
char a[] = {"a"};
char b[] = {"b"};
char c[] = {"c"};
char d[] = {"d"};
...
würde den code seeeeehr lang machenich will nun folgendes machen:
aa = hallo hallo
(also wenn ich 2mal a drücke) soll auch 2mal hallo da stehen
und das geht nur wenn ich ein leerschritt zwischen a und a in der konsole machewie kann man das denn übergehen -> mit
%255[^\n]klapp das nämlich nicht
ich hab nichts wildes vor , ich wollte mal ein bisschen rumexperimenieren
-
upps falsches sample:
if((strcmp(a, eingabe)) == 0) { ... }und das klapt leider nur mit leerschritt aber ich will das sofort hintereinander
machen.also so:
a = hallo
aa = hallo hallound nicht
a a = hallo hallo
-> dafür will ich das haben
-
Ich habe keine Ahnung was du meinst.
-
ich glaube er meint sowas:
-> programm öffnen
-> eingabe
-> wenn eingabe = a, schreibe "Hallo"aber sein problem besteht darin dass er nicht
eingaben mit leerschritte machen will sondern direckt hintereinander
sprich:eingabe = a, schreibe: hallo
eingabe = aa, schreibe: hallo hallound nicht
eingabe = a a -> hallo hallo
wenn ich es richtig verstanden habe

und er will nicht jede abrage als char einsetzen sondern wie in
c++, was leider nur mit zahlen geht wenn man keine extra functionen schreibtint main() { ... int eingabe; cin>>eingabe if (eingabe == "1") { mache_was(); } ... }sondern:
... if (eingabe == "a") { mache_was(); } ...- ich mein, ich selbst find das ja verständlich nicht jede eingabe mit
char vergleichen aber .... geht sowas überhaubt ??? und vorallen in C- sorry keine plan

-
Falls du mit deiner Interpretation recht hast, ist das doch sowohl in C als auch in C++ extrem simpel. Einfach chars (anstatt Zeichenketten) mit den jeweiligen formatierten Eingabefunktionen einlesen (die fischen uns die Whitespaces raus) und vergleichen (aber nicht mit Zeichenkettenliteralen!). Da könnte man sogar mal switch benutzen.
Falls dies das Gesuchte ist, weiß ich gerade nicht, was überhaupt das Problem ist und bedarf einer konkreteren Frage, woran es hapert. Ich mag aber auch nicht mehrere Seiten größtenteils unverstandliches Deutsch lesen, um mir ein eigenes Bild zu machen.
-
naja ... postet ihr mal b++p wie er das machen soll

hier meine antwort

http://www.piratenweib.de/wp-content/uploads/2011/06/ats57347_258Troll_spray.jpg
-
Buch lesen.