text einlesen in c++ - Seite 2

Seite 2 von 4 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/text_einlesen_in_c_58680/page_2 - zur Vollversion wechseln!


M.I.P.S. schrieb am 12.12.2002 um 22:20

int scanf(const char *format, [Argumente]) verlangt als Argument einen Pointer auf eine Variable. Wenn du eine Variable übergibst, wandelt er den Inhalt der Variable in eine Speicheradresse um und speicher den eingelesenen Wert an der entsprechenden Stelle.

Wenn du einen Array (Pointer) in scanf verwendest, brauchst du den &-Operator nicht.
Wenn es ein Primitiver Datentyp wär (int, float...) würdest du bei scanf das & brachen.

edit: ge0wnt; mist ich hab einen delay :(


Vivo schrieb am 12.12.2002 um 23:02

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);

... Nagel auf den Kopf getroffen :)


Duron schrieb am 12.12.2002 um 23:09

was tutsn da rum?

ich würds so machen:
---------------------------------
char text[40];
cin>>text;
cout<<text;
getch();
---------------------------------

edit: hab grad gemerkt dass es so nur eine zeichenkette einliest.
hab seite einem dreiviertel jahr nicht mehr c programmiert :(


FMFlash schrieb am 12.12.2002 um 23:11

Zitat von Duron
was tutsn da rum?
ich würds so machen:
---------------------------------
char text[40];
cin>>text;
cout<<text;
getch();
---------------------------------
fertig

warum?
darum:

eingabe: das ist ein test
ausgabe: das

Zitat von FMFlash
cin kann eher nix, weil man damit afair keine sätze einlesen kann


Duron schrieb am 12.12.2002 um 23:27

Zitat von Duron
edit: hab grad gemerkt dass es so nur eine zeichenkette einliest.
hab seite einem dreiviertel jahr nicht mehr c programmiert :(


hab ich leider erst später bemerkt, sorry :)


xdfk schrieb am 12.12.2002 um 23:28

Zitat
char *interface(char *input_line)
{
char temp_char =0;
int char_count =0;

if (!input_line)
exitOnFatalErrorOutOfMemory();

while ( ( (temp_char = getchar()) != '\n'))
{
input_line[char_count] = temp_char;
char_count++;
if (char_count>=MAX_STR_LEN) break;
}
input_line[char_count] = '\0';
return(input_line);
}
die relativ sichere methode dinge einzulesen....


Vivo schrieb am 12.12.2002 um 23:34

OT : Ich möchte wissen wieviele der hier gesammelten Codestücke vom Threadstarter hergenommen werden :D


atrox schrieb am 12.12.2002 um 23:38

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

nein, gets() ist kein ersatz, es erlaubt keine beschränkung der stringlänge! stattdessen fgets mit dem parameter stdin aufrufen (wird von stdio.h zusammen mit stderr und stdout eingebunden)


xdfk schrieb am 12.12.2002 um 23:42

Zitat von atrox
nein, gets() ist kein ersatz, es erlaubt keine beschränkung der stringlänge! stattdessen fgets mit dem parameter stdin aufrufen (wird von stdio.h zusammen mit stderr und stdout eingebunden)

deswegem getchar und einfach ab einer bestimmten länge eingaben ignorieren...... 99,99999%ig secure. (ich wüsst keine möglichkeit das zu umgehen, heißt aber nix bin newbie in C)


semteX schrieb am 12.12.2002 um 23:42

Zitat von xdfk
die relativ sichere methode dinge einzulesen....
he der f#ngt grad mal an mim programmiern erschlag ihn ned glei ;)


Neo-=IuE=- schrieb am 13.12.2002 um 15:18

Zitat von semteX
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!

schau:
wenn du das machst:
char x[50]
dann ist x die adresse vom 1. element des arrays und wert in [] gibt an um wieviel mal sizeof(variablentyp) (lieft anzahl bytes zurück;)) adressen er weitergeht ;)
also is x[0] gleichbedeutend mit *x und x[1] mit *(x+1)
wenn du jetzt scanf adresse von x[] geben willst musst entweder:
&x[] machen, oda
x
:)


semteX schrieb am 13.12.2002 um 17:16

jo eh!

beim scanf musst &x machn!
Er muss sich das zeug ja von der Adresse holen...

btw, i code scho seit 3 jahrn so, habs so gelernt


Neo-=IuE=- schrieb am 13.12.2002 um 18:25

ja aber eben bei arrays is der name scho die erste adresse, also entweder bei arrays

scanf("",x) oda
scanf("",&x[])
:)


wobbo schrieb am 13.12.2002 um 18:44

Zitat von semteX
jo eh!

beim scanf musst &x machn!
Er muss sich das zeug ja von der Adresse holen...
jo eh... aber x alleine ist schon die adresse ;)


semteX schrieb am 13.12.2002 um 18:59

Zitat von Neo-=IuE=-
ja aber eben bei arrays is der name scho die erste adresse, also entweder bei arrays

scanf("",x) oda
scanf("",&x[])
:)
:confused: i schnall ehrlichgsagt ned ganz was du meinst

i hab es imma glernt dass ma so einliest

und mit printf ausgiebt...

mfg




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026