Char name[5][11] PROBLEM!!!
-
Kein Problem.
In der Schleife lasse ich die einzelnen Zeichen von getName in name kopieren.for (int i = 0; i <= MAX_CHAR, i++) { name[nameCount][i] = getName[i]; }ist das gleiche wie
name[0][0] = getName[0]; name[0][1] = getName[1]; name[0][2] = getName[2]; name[0][3] = getName[3]; name[0][4] = getName[4]; name[0][5] = getName[5]; name[0][6] = getName[6]; name[0][7] = getName[7]; name[0][8] = getName[8]; name[0][9] = getName[9]; name[0][10] = getName[10];wenn du ein char-Array anlegst und füllst, dann ist im jeden Array-Feld ein Zeichen. Um das Wort "Hallo" in ein char-Array zu packen, kann ich das entweder so
char word[5] = "Hallo";oder eben
char word[5]; word[0] = 'H'; word[1] = 'a'; word[2] = 'l'; word[3] = 'l'; word[4] = 'o';Das hat beides den gleichen Effekt
Mfg Ominion
-

ok, dass habe ich soweit verstanden,..aber nun habe ich mal folgendes eingegeben:
Eingabe: testertestertestertester
und bekam folgendes wieder:
Ausgabe: testertester und dann eine Art RAute, EIn Peif und andere Symbole???
Soll das so sein? oder gibt es eine Lösung diese auch weg zubekommen?
mfg Svolf
-
Das liegt daran, dass das Array max. 11 Zeichen aufnehmen kann. Du musst dann MAX_CHAR einfach höher setzen, je nachdem wieviele Zeichen der Name haben können soll.
Mfg Ominion
EDIT: Ich schreibe den Code nochmal um, so dass der User auch nur maximal n Zeichen eingeben kann, wobei n eben dann MAX_CHAR entsprechen wird.
-
cool danke,.wäre voll nett =),.. weil man sollte nur 10 zeichen eingeben dürfen

-
Ich würde einfach nur einen Vector nehmen, und bei Eingaben die mehr als 10 Zeichen enthalten einen Substring bis. max. 10 Zeichen des Eingabestrings bilden. So gibt's auch keine Exceptions, wenn die Eingabe mal über das Arrayende drüber gehen sollte
Oder nimm am besten gleich die string - Klasse, dann hast du das Problem nicht mehr !Edit: Vector = Ein dynamisches Array, das seine Größe automatisch anpasst.
mikey.
-
Das habe ich gerade probiert, hat aber alles nicht richtig geklappt...der name wurde zwar korrekt ausgegeben, allerdings gab es nen Error, wenn ich das Programm beendenwollte...
Mfg Ominion
-
So habe das jetzt fertig.
#include <iostream> #include <conio> #include <string> #define MAX_CHAR 10 int main () { std::string getName; char name[5][MAX_CHAR]; int nameCount; std::cout << "Dein Name "; std::cin >> getName; for (int i = 0; i < MAX_CHAR; ++i) { name[nameCount][i] = getName[i]; } name[nameCount][MAX_CHAR] = ' '; std::cout << std::endl << "Hallo " << name[nameCount] << std::endl; getch (); return 0; }Das müsste jetzt so funktionieren.
Mfg Ominion
PS: wenn es nicht funktionieren sollte, häng an die Includes noch .h nach dem Name ran, also
#include <iostream.h> #include <conio.h> #include <string.h>
-
und nun die Erklärung bitte =),...
wieso machst du das hier? name[nameCount][MAX_CHAR] = ' ';????
-
Das mache ich, weil sonst so ein wunderschönes, überflüssiges Zeichen kommt, was dort aber gar nicht hinsoll...ist zwar nicht die eleganteste Methode, aber es funktioniert.
Mfg Ominion
-
Ehm,..gibt es doch vielleicht noch eine andere möglichkeit mein dev c++ hat keine string bibliothek kann diese nicht verwenden,..und macht deswegen mucken,.und mein visuel studio 2005 ,..hat auch lauter fehler ,..mit den keiner etwas anfangen kann,....gibt es vielleicht eine andere möglichkeit ,.mit ein gutem beispiel,...und eine erklärung dazu ,.wäre nett ,..thx schon einmal im voraus.
-
#include <iostream> #include <conio> #define MAX_CHAR 10 int main () { char getName[50]; char name[5][MAX_CHAR]; int nameCount; std::cout << "Dein Name "; std::cin >> getName; for (int i = 0; i < MAX_CHAR; ++i) { name[nameCount][i] = getName[i]; } name[nameCount][MAX_CHAR] = ' '; std::cout << std::endl << "Hallo " << name[nameCount] << std::endl; getch (); return 0; }Mfg Ominion
-
dev C++ hat echt keine String Bibliothek???
resp. wenn schon strings verwendet werden wieso dann wieder auf char umspringen? Hat das einen speziellen Grund?
-
Hilfe!!!
Es kommen immernoch die Zeichen,.ok er gibt nur die Zeichen aus,..sogroß das FEld ist,.aber danach kommen immernoch sone komischen Zeichen,.liegt es jetzt an meine Kompiler,.oder testet ihr die Programme nicht(soll jetzt keine Beleidigung sein). Ich hoffe das mir doch noch jemand helfen kann.
mfg
Svolf
-
Hmmm...also...
@Shinja: k.A warum ich wieder char benutzt habe...ich glaube, weil der Name ja begrenzt sein soll, aber richtig nachvollziehen kann ich das leider auch nicht mehr^^
@Svolf: also getestet habe ich es erst jetzt...bei mir funktioniert es einwandfrei, solange meine Eingabe nicht größer als 50 ist. Wie lang sind deine eingaben ungefähr?
Mfg Ominion
-
Hinweis, ohne viel nachzudenken oder zu probieren:
char name[5][11]; // 5 Namen for(int i=0; i<6; i++) // 6 Namen { gotoxy(30,10 + i); cout << name[i]; }
-
Dann müsste es
char name[5][11]; for(int i=0; i<=6; i++) { gotoxy(30,10 + i); cout << name[i]; }und nicht
char name[5][11]; for(int i=0; i<6; i++) { gotoxy(30,10 + i); cout << name[i]; }heißen.
Mfg Ominion
-
0 1 2 3 4 5 macht bei mir 6 Elemente
-
upps...jaja...zählen muss gelernt sein...sry
Mfg Ominion