Nur das erste Wort wird gelesen?

Skkat

Grünschnabel
Hey Com!
Ich habe ein kleines problem!
Ich habe einen kleinen code, mit dem er die textdatei liest, und den inhalt automatisch
in einen string umwandelt! Aber er liest nur das erste wort in der datei!
Hier mal der code :
C++:
char S[] = "";
ifstream f("Test.txt");
f >> S;
printf("%s", S);
Also wie kann ich es machen, das er den ganzen text in der text datei liest?
 
Hi und Willkommen bei tutorials.de

mit der ersten Codezeile machst du einen String, in dem genau 0 Zeichen platzhaben.
Was passiert, wenn du mehr reinschreibst, kann variieren;
Probleme macht es aber in jedem Fall.
Gib eine Größe an.

Statt printf %s kann man übrigens puts nehmen.
Und bei einem großen S denkt man eher an #define statt Variablennamen.

Noch etwas zum Forum: Bitte Netiquette 15 beachten
(Link immer am unteren Seitenrand oder auch in meiner Signatur).
 
Hi Skkat und herzlich Willkommen hier :)

Du erstellst ein char-Array mit der Größe 1. Dann versuchst du da rein die Textdatei zu schreiben. Kenne mich zwar mit C++ fast gar nicht aus, aber das sieht für mich wie ein klassischer SEGFAULT aus, der früher oder später auftreten sollte.

Versuchs mal so wie auf dieser Seite beschrieben.

Grüße,
BK
 
Bin ziemlich neu in der c++ programmierung :D
weiss nicht genau wie ich mehr platz für mehr zeichen mache!
kann mir nochmal jemand helfen?
 
Bitte Netiquette 15 beachten
(Link immer am unteren Seitenrand oder auch in meiner Signatur).

Statt
C++:
char S[] = "";
so:
C++:
char S[1234] = "";
Einfach in den [] die gewünschte Länge angeben.
Und das "" ist (dann) auch überflüssig.
Also (gleich mit kleinem Variablennamen)
C++:
char s[1234];
Ob 1234 für die gesamte Datei reicht, hängt von der Datei ab.
Warum willst du überhaupt alles auf einmal einlesen?
 
Naja hauptsache die erste zeile wird komplett ausgegeben!
weil vorher kam immer nur das erste wort raus!
Ich werde jetzt mal das versuchen, ob dein code klappt !

Edit : Funktioniert auch nicht! er liest wieder nur das erste wort!
In meiner txt datei steht zB. drinnen : Hallo wie gehts , es wird nur "Hallo" ausgegeben!
Hier der code :
Code:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
char S[1234];
ifstream f("Test.txt");
f >> S;
printf("%s", S);
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Zuletzt bearbeitet:
Bitte Netiquette 15 beachten.
Extracts characters and stores them as a c-string (i.e. in successive locations starting at location pointed by str and terminated by a null-character). Extraction ends when the next character is either a valid whitespace or a null character, or if the End-Of-File is reached.
The terminating null character is automatically appended after the extracted characters.
The extraction operation can be limited to a certain number of characters (thus avoiding the possibility of buffer overflow) if the field width (which can be set with ios_base::width or setw) is set to a value greater than zero. In this case, the extraction ends one character before the count of characters extracted reaches the value of field width, leaving space for the ending null character. After a call to this extraction operation the value of the field width is automatically reset to zero.
Das ist auch ganz in Ordnung so.
Bratkartoffel hat dir ja schon gezeigt, wie es geht.
getline.
 
Jetzt funktioniert es :)
Noch eine kleine frage : ist es irgendwie möglich beim txt datei schreiben zB.
man in der konsole den inhalt einer textdatei reinschreibt, und sie dann mit diesem text erstellt wird? also nochmal etwas genauer : man wird gefragt was in zB. Test.txt reingeschrieben werden soll, und das muss man dann eingeben... ich denke das ganze funktioniert mit strings... bekomme das aber noch nicht genau hin... Ich bitte nochmal um hilfe!

Edit: Das ist meine eigentliche idee, die aber nicht klappt... :

Code:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
char Name[] = "";
scanf("%s", &Name);    
FILE * Datei;
Datei = fopen("Test","w");
fprintf(Datei, "%s", Name);
fclose(Datei);
cout<<"Registry was successful!"<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Zuletzt bearbeitet:
Unser Forum ist kein Chatroom. Kurz-Beiträge ("Ein-Zeilen Postings"), die einfach so ins Forum "geklatscht" werden, werden ohne Vorwarnung von einem Moderator oder Administrator gelöscht. Das gleiche gilt insbesondere für Beiträge, die in Rechtschreibung, Satzbau und Verständlichkeit nicht ein vernünftiges, allgemein übliches und altersgruppen-übergreifendes Niveau erfüllen. Jugendsprache, regional verbreitete Dialekte und durchgehend kleingeschriebene Beiträge sind ebenfalls unerwünscht. Mit anderen Worten: wer erfolgreich die im Deutsch-Unterricht erlernten Kenntnisse praxisnah auf unserem Forum anwenden kann, wird nicht mit dieser Regel in Konflikt kommen. "Wiederholungstäter" werden, nachdem sie zuvor von einem Moderator auf die Mängel hingewiesen wurden, ggf. unbefristet gesperrt.
Was ist daran unverständlich?
Dein Text hat 7 Zeilen, darin insgesamt 5 Großbuchstaben...

Zum Problem: Wenn du die Hinweise in den oberen
Posts beachtet hättest würde es funktionieren.

Und wenn du schon ifstream nimmst, solltest du auch ofstream nehmen.
 
Zurück