c++ // struct // Daten ändern
-
Liebe Leute,
ich programmiere gerade mit Microsoft Visual C++ 2010 Express ein Konsolen-Programm für die Verwaltung von Adressen in einem array/struct wie folgt:
struct Kunde { char Vorname[255]; char Nachname[255]; int Plz; char Ort[255]; }; struct Kunde K[9];
Die Eingabe und Anzeige von Daten funktioniert prima. Nur das ändern von Daten funzt leider nicht. Ich muß dazusagen, dass ich in C++ ein Anfänger bin und mir bis jetzt die Grundlagen per Video-Tutorial beigebracht habe. Folgende Methoden / Ideen sind bis jetzt fehlgeschlagen:
Idee 1:
for(int z = 0; z < num_array; ++z) { memcpy( K[z].Vorname , K[z].Vorname , 255 ); memcpy( K[z].Nachname , K[z].Nachname , 255 ); K[z].Plz = K[z].Plz; memcpy( K[z].Ort , K[z].Ort , 255 ); }
Idee 2:
K[z].Vorname = K[z].Vorname; K[z].Nachname = K[z].Nachname ; K[z].Plz= K[z].Plz; K[z].Ort = K[z].Ort ;
Es muß doch möglich sein, einen Wert, den ich bsp. in K[1].Vorname geschrieben habe, zu ändern, oder?
Über jeden Tipp bin ich dankbar!
Herzlichst René Schneider
-
Erstens: Was für einen Sinn soll es haben, wenn du die Werte sich selber zuweist?
Zweitens: Hast du es mal mit strcpy() probiert?
Drittens: In C++ arbeitet man normalerweise nicht mit char-Arrays, sondern mit std::string.
Viertens: Wie äußert sich dieses "fehlgeschlagen"?
-
typedef struct { char Vorname[255]; char Nachname[255]; int Plz; char Ort[255]; } Kunde; ... Kunde kunden[9] = { {"v1","n1",1234,"ort1"}, {"v2","n3",4567,"ort2"} }; /* Zuweisung eines kompletten Strukturelements in ein anderes: */ kunden[2] = kunden[0]; /* vorher 0 initialisiertes 3. Arrayelement ist jetzt mit Werten des 1. gefüllt */ /* Füllen des 4. Elements mit manueller Eingabe: */ if( 4==scanf("%254s%254s%d%254s",kunden[3].Vorname,kunden[3].Nachname,&kunden[3].Plz,kunden[3].Ort) ) puts("Werte in korrekter Form eingegeben!"); else puts("Fehleingabe");
Hat aber nichts mit C++ oder gar MFC zu tun.
-
Danke Wutz,
Danke CStoll,die Lösung von Wutz habe ich umgesetzt und es scheint soweit zu funktionieren - nur die Ausgabe hängt. In folgenden Schema würde ich gerne die Ausgabe realisieren:
std::cout << "-----------------------" << std::endl;
std::cout << "Vorname: " << kunden[i].Vorname << std::endl;
std::cout << "Nachname: " << kunden[i].Nachname << std::endl;
std::cout << "Plz: " << kunden[i].Plz << std::endl;
std::cout << "Ort: " << kunden[i].Ort << std::endl;Hat Wutz hier eine Idee, wie die Ausgabe auf Basis des "typedef struct" funktionieren kann? Aktuell meckert der Compiler: "'kunden': nichtdeklarierter Bezeichner".
Danke für einen Tipp!
René Schneider@CStoll:
1.
hier muß ich kurz ausholen: Ich programmiere gerade für Lernzwecke eine konsolenbasierte Adress-Datenbank mit einem Menü: Daten anzeigen, Daten eingeben, Daten ändern, Daten löschen. Nachdem ich nun die mehere Datensätze eingegeben habe, will ich auch Datensätze wieder löschen können, indem ich alle Einträge ab dem zu löschenden Datensatz einen Index-Wert nach vorne kopiere. Bsp.: kunden[i].Vorname = kunden[i+1].Vorname;2. noch nicht
3. Danke für den Tipp
4. Mit Compilerfehlern, jetzt habe ich aber die Meldungen nicht mehr parat!
-
Nimm mal das hässliche std:: raus und dafür namespace.
Was ist an der Compilermeldung "'kunden': nichtdeklarierter Bezeichner" nicht verständlich?
Du verwendest eine Bezeichnung, die du zuvor im entsprechenden Sichtbarkeitsbereich des Compilers nicht definiert oder zumindest deklariert hast.
-
Hallo Wutz,
danke für Deine Hilfe, jetzt habe ich das array "kunden" richtig deklariert und nun funzt Dein Ansatz mit dem Ändern der Daten!
Prima.
Viele Grüße René Schneider