Verständnisfrage zu *char und char[x] ....
-
ok hier mal ein kleiner Quelltext am Schluß dann meine Frage
char smallstring[64]; char *search; strcpy(smallstring, "Hello World"); search = strchr(smallstring, ' '); //Leerzeichen suchen strcpy(smallstring, search + 1); printf(smallstring); -> Ausgabe: World
kann man nicht anstelle von
strcpy(smallstring, search + 1);
irgendwie so was schreiben
smallstring = search + 1;
da meckert mein Compiler immer, muß ich da casten oder geht das gar nicht anderst?
-
wirrwarr schrieb:
kann man nicht anstelle von
strcpy(smallstring, search + 1);
irgendwie so was schreiben
smallstring = search + 1;
nein, das geht nicht. man kann einem array durch angabe seines namens nichts neues zuweisen, weil es keine veränderliche variable (lvalue) in dem sinne ist.
du könntest natürlich 'printf (search+1);' schreiben, dann kannst du auf das 'strcpy' verzichten.
-
Danke für die schnelle Antwort. Es ging mir nicht nur darum in diesem konkreten Beispiel die eine Zeile zu sparen, sondern generell zu wissen obs geht oder nicht. Ich hab mir halt gedacht ein "=" ist irgendwie schneller als ein "strcpy", wenn man jetzt diesen Vorgang zigtausendfach durchführen muss.
-
wirrwarr schrieb:
...sondern generell zu wissen obs geht oder nicht. Ich hab mir halt gedacht ein "=" ist irgendwie schneller als ein "strcpy", wenn man jetzt diesen Vorgang zigtausendfach durchführen muss.
in einigen anderen sprachen kann man zeichenketten mit '=' kopieren. dahinter verbirgt sich aber meistens doch nur byteweises rüberschaufeln.
C macht solche verschleierungstechniken nicht. C ist 'ehrlich' zum programmierer
-
Ah, danke für die ausführliche Antwort, ich glaub mich zu erinneren, daß das in Turbo Pascal so der Fall war.