Aufgaben aus der Schule; char [gelöst]
-
Überall in der Schule gesucht und nirgendwo ein Copy gefunden? (Tipp: der Lehrer hat es in der Schublade vom Pult eingesprerrt.)
Spatz beiseite: mach Dir Dein char-Arry-Copy doch selber:
char vorname[20]; char nachname[20]; char name[42]; // Einlesen ... cin >>... // Konkatenieren int pos_name=0; for(int pos_vn=0; vorname[pos_vn]!=0 && pos_vn<20; ++pos_vn) name[pos_name++]=vorname[pos_vn]; name[pos_name++]=' '; //Leerzeichen dazwischen for(int pos_nn=0; nachname[pos_nn]!=0 && pos_nn<20; ++pos_nn) name[pos_name++]=nachname[pos_nn]; name[pos_name]='0'; // Vorsicht in der PorzellankisteSicher nicht die schönste Lösung, aber sollte grob tun

Angestrebter Lerneffekt: Strings als Null-terminierte Char-Arrays (klassische C-Strings) selbst verwurschdeln.Zusatzaufgabe für Übermotivierte: Zeiger-Arithmetik statt Feld-Indizes verwenden!
-
hm, dafür das der post nicht lang ist hast du es geschafft mich während der geschätzen minute die ich zum lesen brauchte komplett zu verwirren

heißt das (übersetzt für alle wie mich) das ich einen copy befehl selbst erstellen könnte wenn ich den code aus deinem post entnehme?
-
Shruikan schrieb:
hm, dafür das der post nicht lang ist hast du es geschafft mich während der geschätzen minute die ich zum lesen brauchte komplett zu verwirren

lol ja bei solchen kommentaren
löl schrieb:
//Konkatenieren
//Vorsicht in der Porzellankistekein wunder

-
evtl mal eine variante mit strcat
char vorname[]="vorname"; char nachname[]="nachname"; char name[42]={0}; strcat(name,vorname); strcat(name," "); strcat(name,nachname); cout << name << endl;ist zwar viel? langsamer aber dafür kürzer
-
Paulomat schrieb:
Zusatzaufgabe für Übermotivierte: Zeiger-Arithmetik statt Feld-Indizes verwenden!
jipee

char vorname[20]; char nachname[20]; char name[42]; char *pvorname = vorname; char *pnachname = nachname; char *pname = name; while((*pname++ = *pvorname++)); *pname++ = " "; while((*pname++ = *pnachname++)); *pname = "\0";
-
cppAnfängerÜbermotiviert schrieb:
Paulomat schrieb:
Zusatzaufgabe für Übermotivierte: Zeiger-Arithmetik statt Feld-Indizes verwenden!
jipee

char vorname[]="vorname"; char nachname[]="nachname"; char name[42]={0}; char *pvorname = vorname; char *pnachname = nachname; char *pname = name; //alles inkl. '\0' kopieren while((*pname++ = *pvorname++)); //'\0' durch ' ' ersetzen *--pname = ' '; //den rest inkl. '\0' kopieren while((*++pname = *pnachname++));hoffe jetzt stimmts

-
hack_ab_die_hand schrieb:
cppAnfängerÜbermotiviert schrieb:
Paulomat schrieb:
Zusatzaufgabe für Übermotivierte: Zeiger-Arithmetik statt Feld-Indizes verwenden!
jipee

char vorname[]="vorname"; char nachname[]="nachname"; char name[42]={0}; char *pvorname = vorname; char *pnachname = nachname; char *pname = name-1; //alles inkl. '\0' kopieren while((*++pname = *pvorname++)); //'\0' durch ' ' ersetzen *pname = ' '; //den rest inkl. '\0' kopieren while((*++pname = *pnachname++));hoffe jetzt stimmts

jetzt noch bischen unrollen und fertig ist der porsche

-
char nachname[] = "schroeder"; char vorname[] = "kartoffel"; *(nachname-1) = ' '; std::cout << vorname << std::endl;Undefiniert aber kürzer. :p
-
-
Meine Güte, das ist ja gemeingefährlich. Nachher nimmt das noch jemand ernst!

-
Fellhuhn schrieb:
char nachname[] = "schroeder"; char vorname[] = "kartoffel"; *(nachname-1) = ' '; std::cout << vorname << std::endl;Undefiniert aber kürzer. :p
Hehe, ich kann nicht mehr...

-
Shruikan schrieb:
hm, dafür das der post nicht lang ist hast du es geschafft mich während der geschätzen minute die ich zum lesen brauchte komplett zu verwirren

Bitte schön, gern geschehen.
Shruikan schrieb:
heißt das (übersetzt für alle wie mich) das ich einen copy befehl selbst erstellen könnte wenn ich den code aus deinem post entnehme?
Latürnich. Dafür sind Allzweck-Programmiersprachen ja gedacht. Mit C/C++ kannst Du so ziemleich alles selbst machen. Bequemer und schneller (und meist auch korrekter) sind natürlich Bibliothekem mit fertigem Code. Aber den hat ja auch mal jemand erstellt (meist in C/C++).
Nur für sehr hardware-nahe Magie braucht man evtl. manchmal Assembler (wenn man low-level Zeug für OS/Treiber schreibt, dass direkt irgendwelchen speziellen CPU-Register/Features benutzt - siehe PrettyOS Projekt & -Tutorial im OS Forum!)
-
guten morgen und besten dank.
habe mich vor zwei minuten eingestempelt...rechner an...forum lesen. BOOM"Shruikan schau weg"
Ich werd gleich die neuen Lösungsansätze die hier geschrieben wurden ausprobieren und sehen was daraus wird.
Werde sobald ich ein lauffähiges Programm auf die beine gestellt habe werd ich es hier stolz verkünden.vorab erstmal wieder danke für die vielen denkanstöße (und den ein oder anderen lacher)
lg
-
!!!!!!!
Habe es geschafft!
Es gibt noch Wunder. Der Lösungsansatz von cpp_anfänger hat auf anhieb hingehauen.
War der erste Code-Schnipsel den ich getestet habe und der hat gepasst.Damit wäre mein Problem erledigt. Danke euch allen für die zahlreichen Ideen und die schnelle Hilfe.
Wir sehen uns dann beim nächsten Problem wieder.
Letzte Frage noch, wie ist das hier mit Beiträge closen? Muss ich das machen oder übernehmen das die Mods?
-
Shruikan schrieb:
Letzte Frage noch, wie ist das hier mit Beiträge closen? Muss ich das machen oder übernehmen das die Mods?
Brauchst du nicht. Pack einfach ein "[gelöst]" oder so in den Threadtitel.