"We are back" « oc.at

text einlesen in c++

moidaschl 12.12.2002 - 16:26 2268 47
Posts

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
also ich will mit
cin .. oder scanf ( mir egal) einen text einlesen ... also einer schreibt
hallo lieber overclocker 12344 ... und ich will dass dieser text dann unten wieder ausgegeben wird? wie geht des? ich kann des irgendwie nur einzehlne zahlen, buchstaben etc..
danke

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
int main ()
{
char str [80];

scanf ("%s",str);

//... blabla

printf ("%s",str);

return 0;
}

Edit zwecks Volständigkeit : #include <stdio.h>

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
thx

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
nur zum strings lesen ist scanf viel zu rechenzeitaufwendig, und ausserdem viel zu unsicher - du kommst in teufels küche, falls sich der string nicht im ziel-feld ausgeht!

zum einfachen lesen aus text-dateien empfehle ich zb:
char *fgets(char *s, int size, FILE *stream);

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Zitat von atrox
nur zum strings lesen ist scanf viel zu rechenzeitaufwendig, und ausserdem viel zu unsicher - du kommst in teufels küche, falls sich der string nicht im ziel-feld ausgeht!

Kann ich nur zustimmen, ich würd scanf auch nur verwenden, wenns wirklich nicht anders geht, und da fällt mir auf die Gachn kein Anwendungsfall ein.

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
Zitat von atrox
nur zum strings lesen ist scanf viel zu rechenzeitaufwendig, und ausserdem viel zu unsicher - du kommst in teufels küche, falls sich der string nicht im ziel-feld ausgeht!

zum einfachen lesen aus text-dateien empfehle ich zb:
char *fgets(char *s, int size, FILE *stream);

ergänzung:
da er aber nicht nach einer möglichkeit sucht aus einem file zu lesen sondern aus dem stdin stream -> gets () statt fgets ()

cin kann eher nix, weil man damit afair keine sätze einlesen kann
Bearbeitet von FMFlash am 12.12.2002, 20:13

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6907
wennst willst kannst es auch in eine datei auslagern und wieder einlesen

schaust einfach mal in der funktion fstream nach und dann gibts die klassen ofstream und ifstream mit denen du operatoren bestimmen kannst

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14722
jo

einfach

char fickn[50];
scanf("%s", &fickn);

printf("%s", fickn);

fertig

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von semteX
jo

einfach

char fickn[50];
scanf("%s", &fickn);

printf("%s", fickn);

fertig

hmm ... das ist mir jetzt abgesehn von der nicht jugendfreien wahl der variablen nicht ganz klar ...

in diesem falls wäre "fickn" ein pointer auf das erste element des Arrays ...
Mit &fickn bekommst du die Adresse des Pointers ... hmm ... aber dar das ja schon ein Array ist macht das doch garkeinen Sinn das ganze by Reference zu machen ...

Oder lieg ich falsh ? Bitte korregier mich falls ich auf der Leitung stehe !

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
jo semtex hat ärgsten dreck gecodet :D
weil er nimmt die adresse von "fickn" und schaut im speicher was für adresse in der speicherzelle mit der adresse "fickn" liegt... und dorthin schreibt ers dann, also mal IRGENDWO

@fgets()
man kann ja auch als datei stdin angeben ;)

weiRd

Addicted
Avatar
Registered: Sep 2001
Location: 0xFF3400F2
Posts: 427
ich bin mir nicht mehr ganz sicher (c is schon länger her) aber ich bilde mir ein, dass man bei scanf &variable schreiben hat müssen

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14722
Zitat von Neo-=IuE=-
jo semtex hat ärgsten dreck gecodet :D
weil er nimmt die adresse von "fickn" und schaut im speicher was für adresse in der speicherzelle mit der adresse "fickn" liegt... und dorthin schreibt ers dann, also mal IRGENDWO

@fgets()
man kann ja auch als datei stdin angeben ;)
nennen wir die variable x

is jugendfreier

warum hab i dreck gecodet?!? i mach das imma so

du spannst feld auf mit 50 zeichn callled X

dann lest nen string ein (%s) und speicherst das auf X

mit printf gibst es wieder aus

wo is da der dreck?!?

klar speichert er es IRGENDWO

und? who cares?
is ja egal wo im ram das ding liegt

@Weird: Da liegst du richtig!

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6907
jo wieso machst es ned direkt sondern über einen pointer? des called by reference brings ja ned

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
bei einfachen elmenten übergibt man die addresse

char x;
scanf ("%s", &x);

bei arrays den pointer

char x [1024];
scanf ("%s", x);

weiRd

Addicted
Avatar
Registered: Sep 2001
Location: 0xFF3400F2
Posts: 427
Zitat von FMFlash
bei einfachen elmenten übergibt man die addresse

char x;
scanf ("%s", &x);

bei arrays den pointer

char x [1024];
scanf ("%s", x);

ok so war es :)

ich würde die zeichen einzelnd einlesen und dann in eine array hineinschreiben...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz