URL: https://www.overclockers.at/coding-stuff/text_einlesen_in_c_58680/page_3 - zur Vollversion wechseln!
1. fall: dynamisch allokierter speicher
char *x =malloc(30*sizeof(char));
scanf("%s",x);
2. fall: statisches array
char x[50];
scanf("%s",&x);
so sollte es stimmen wenn mich nicht alles täuscht
Es ist folgendermasen ....
Prinzipiell gibt man einen einzelnen char folgendermasen ein:
char x;
scanf("%s",&x); //mit dem &operator bekommt man die Adresse der Variable
Wenn man das ganze dynamisch macht sieht das so aus :
char *x;
x = new char; // EDITED !!
scanf("%s",x); //&operator nicht mehr nötig, weil char* bereits die Adresse enthält
Bei einem Array ist das dann folgendermasen :
char x[2]; //Es wird ein char* erzeugt der auf das erste Element zeigt und mit der Syntax x[1] ersetzt man nur *(x+1)
scanf("%s",x); //&operator nicht mehr nötig, weil die variable x die Adresse des ersten Elements enthält ...
ui, das war schön erklärlt ... 
Edit : ah, mach das weg xdfk ... der 2te Fall ist falsch
.. du verwirrst ihn nur !
Vivo bei deiner lösung kann ma ja nur ein zeichen speichern... des is ja ned gewollt oder?!?
jep ... bei den oberen beiden is nur ein char ... bei dem letzten 2 ...
i hab das so verstanden als ob wer nen ganzn satz einlesn wollte
OK ...
Die Lösung die ich irgendwann vorher angegeben liest einen Satz / Wort ein ... je nach länge des angegeben Strings
Das was ich unter "Es ist folgendermasen steht" dient rein nur zum allgemeinen verständnis der scanf Funktion mit Arrays
.....
vivo hats glaub i eh verständlich genug erklärt ... bzw meines wissens richtig
finds nua fui cool dass ma über so was einfaches so lang diskutieren kann ... des is eines der ersten programme die ma in c schreibt wenn ma c lernt 
jo eh is es 
Zitat von VivoEs ist folgendermasen ....
Prinzipiell gibt man einen einzelnen char folgendermasen ein:
char x;
scanf("%s",&x); //mit dem &operator bekommt man die Adresse der Variable
Wenn man das ganze dynamisch macht sieht das so aus :
char *x;
scanf("%s",x); //&operator nicht mehr nötig, weil char* bereits die Adresse enthält
Bei einem Array ist das dann folgendermasen :
char x[2]; //Es wird ein char* erzeugt der auf das erste Element zeigt und mit der Syntax x[1] ersetzt man nur *(x+1)
scanf("%s",x); //&operator nicht mehr nötig, weil die variable x die Adresse des ersten Elements enthält ...
ui, das war schön erklärlt ...
Edit : ah, mach das weg xdfk ... der 2te Fall ist falsch.. du verwirrst ihn nur !
hm i habs grad extra probiert, ES GEHN BEIDE varianten:
scanf("%s", &x)
scanf("%s", x)
i denk, des liegt an scanf bei verwendung von arrays, dass er des abcheckt 
sorry stimmt ... edited ! hab das allocieren vergessen ...
Wenn dein 2tes Beispiel stimmen würde ist diese Referenz falsch ...
http://www.cplusplus.com/ref/cstdio/scanf.html
So, ich weiss nicht wie lange noch weiterdiskutiert wird ... aber i kann so ziemlich 100pro sagen dass das was in meine erklärungsthread (jetzt) steht stimmt ...
Edit : OK ... g0wned von Neo-=IuE=-
Zitat von Neo-=IuE=-hm i habs grad extra probiert, ES GEHN BEIDE varianten:
scanf("%s", &x)
scanf("%s", x)
i denk, des liegt an scanf bei verwendung von arrays, dass er des abcheckt
Code:#include <stdio.h> int main() { char *x; scanf("%s",x); }
Zitat von Vivosorry stimmt ... edited ! hab das allocieren vergessen ...
schon mal auf die idee gekommen dass wir gleichzeitig beim replyen waren..
also lern zuerst coden bevor du mich blöd anredest. weitere diskussionen per pm fallst was zu sagen hast.
ich compile mim borland compiler 3.1
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026