struct befehl richtig anwenden
-
asak schrieb:
aha also kein c++ und deswegen gibts cstdio.....
*lol*
mir ist klar warum du lachst allerdings solltest du mal drüber nachdenken
ob eine Aussage wie
"ist kein c++" nicht leicht impliziert dass es kein gültiges c++ ist,
also entweder falsch oder nicht standartgerecht.
Aber es könnte natürlich schwer fallen die eigenen Formulierungen kritisch zu betrachten ....
-
Aber es könnte natürlich schwer fallen die eigenen Formulierungen kritisch zu betrachten ....
Es gibt nichts an der Aussage zu ändern:
[/quote]scanf und printf sind ebenfalls C.[quote]ist absolut eindeutig und was dagegen spricht alte C Libs und C++ zu vermischen solltest du eigentlich wissen.
-
Also ich muss das mit struct machen. Aber wenn ich das jetzt so kompiliere, kommt immer noch drei Fehler in der Zeile:
daten dat[auswahl];
- Konstanter Ausdruck erwartet
- Reservierung eines Arrays der konstanten Grösse 0 nicht möglich
- 'dat': Unbekannte Grössesystem("cls"); printf("Wieviele Benutzer wollen Sie anlegen?"); scanf("%i",&auswahl); struct daten{ char name[40]; char vname[30]; char strasse[50]; int hnummer; }; daten dat[auswahl]; for(i=0;i<auswahl;++i){ strncpy(dat[i].name,"was auch immer",40); strncpy(dat[i].vname,"was auch immer",40); }
Und anstatt
strncpy(dat[i].name,"was auch immer",40);
könnte ich dann auch einfach
dat[i].name="Hallo";
schreiben oder nicht??
MFG
-
asak schrieb:
Aber es könnte natürlich schwer fallen die eigenen Formulierungen kritisch zu betrachten ....
Es gibt nichts an der Aussage zu ändern:
[_quote]scanf und printf sind ebenfalls C.[_quote]ist absolut eindeutig und was dagegen spricht alte C Libs und C++ zu vermischen solltest du eigentlich wissen.
ich denke wir haben dann einfach unterschiedliche Ansichten wie man deine Aussage verstehen kann, aber ich denk das ist nicht weiter schlimm...
und ja ich denke ich kann den Gebrauch von C-libs einschätzen , versuche nur meist kein völlig neues Programm als Lösung anzubieten, sondern auf die Fehler einzugehen.
-
daten dat[auswahl];
geht nicht. Siehe oben( gcc erweiterung )
dat[i].name="Hallo";
geht nur wenn du daten.name als string deklarierst( siehe oben )
-
shapeless schrieb:
daten *dat=new daten[max_];
sollte dann doch deine anforderungen erfüllen.
-
wie mache ich das dann, dass ich Beispielsweise in der For-Schleife die NAmen angegeben muss?
for(i=0;i<auswahl;++i){ printf("Name des %i.Benutzers: "); scanf("%c",&daten[i].Name); }
So funktioniert das bei mir nich...
-
Meine natürlich:
for(i=0;i<auswahl;++i){ printf("Name des %i.Benutzers: ",i); scanf("%c",&dat[i].Name); }
-
Name ist ein char *, nicht wahr ( bin zu faul den ganzen thread nochmal zu lesen, es ist furchtbar heiss heute ).
dann solltest du auch "%s" im scanf verwenden.
Kurt
-
staden4 schrieb:
Also ich muss das mit struct machen. Aber wenn ich das jetzt so kompiliere, kommt immer noch drei Fehler in der Zeile:
daten dat[auswahl];
- Konstanter Ausdruck erwartet
- Reservierung eines Arrays der konstanten Grösse 0 nicht möglich
- 'dat': Unbekannte Grössedie fehlermeldung resultiert daraus, dass du möchtest, dass jemand eine arraygrösse eingibt. nun ist die regel einfach so, dass ein array mit einer konstanten starten muss.
- Konstanter Ausdruck erwartet
deine variable ist nicht konstant.- Reservierung eines Arrays der konstanten Grösse 0 nicht möglich
da zur laufzeit noch nicht initialisiert- 'dat': Unbekannte Grösse
grösse kann nicht bestimmt werden.schon mal sowas probiert
itemtype dat[] = {0}; und danach redimensionieren, wenn du weisst, wie gross es werden soll?
-
ZuK schrieb:
Name ist ein char *, nicht wahr ( bin zu faul den ganzen thread nochmal zu lesen, es ist furchtbar heiss heute ).
dann solltest du auch "%s" im scanf verwenden.
Kurtmach eine klasse, wie das beispiel oben! und dann benutzt du ein anwendungsprogramm, dass die entsprechenden funktionen aufruft.
-
#include <cstdlib> #include <iostream> using namespace std; #define MAX 100; class daten { private: string name; string vname; public: daten(string vorname="Max", string nachname="Muster"){vname=vorname;name=nachname;} ~daten(){} void set_name(string nachname){name=nachname;} void set_vname(string vorname){vname=vorname;} string get_name(){return name;} string get_vname(){return vname;} }; int main(int argc, char *argv[]) { daten dat[100]; string n, v; char choice; for (int i = 0; i < 100; i++) { cout << "Person " << i << endl; cout << "Geben Sie einen Vornamen ein: "; cin >> v; dat[i].set_vname(v); cout << "Geben Sie einen Nachnamen ein: "; cin >> n; dat[i].set_name(n); cout << "weitere person eingeben? (j/n)" << endl; cin >> choice; if (choice == 'n') break; } for (int j = 0; j < 100; j++) cout << dat[j].get_name() << ", " << dat[j].get_vname() << endl; system("PAUSE"); return EXIT_SUCCESS; }
-
wuschelz schrieb:
ZuK schrieb:
Name ist ein char *, nicht wahr ( bin zu faul den ganzen thread nochmal zu lesen, es ist furchtbar heiss heute ).
dann solltest du auch "%s" im scanf verwenden.
Kurtmach eine klasse, wie das beispiel oben! und dann benutzt du ein anwendungsprogramm, dass die entsprechenden funktionen aufruft.
es wurde schon gesagt dass er struct benutzen soll....
aber er kann ja auch auf die stream funckionen und vor allem auch auf nen std::string zurückgreifen wie es ja auch schon am anfang gesagt wurde..
insofern er das denn darf und er ggf nich wirklich nen C-programm schreiben soll.
dies kann aber nur der threadstarter angeben.....
-
So, jetzt hab ich fast alles. Aber irgendwie klappt das trotzdem nicht. Irgendwie wird das glaube ich nicht richtig gespeichert.
system("cls"); printf("Wieviele Benutzer wollen Sie anlegen?"); scanf("%i",&auswahl); struct daten{ char name[50]; char vname[50]; char strasse[50]; char hnummer[10]; }; //daten dat[auswahl]; daten *dat=new daten[auswahl]; for(i=1;i<=auswahl;++i){ printf("\n\nDaten des %i.Benutzers\n",i); printf("Name: "); scanf("%s",&dat[i].name); printf("Vorname: "); scanf("%s",&dat[i].vname); printf("Strasse: "); scanf("%s",&dat[i].strasse); printf("Hausnummer: "); scanf("%s",&dat[i].hnummer); } system("cls"); for(i=1;i<=auswahl;++i){ printf("Name: %s \nVorname: %s \nStrasse: %s %s \n",dat[i].name, dat[i].vname, dat[i].strasse,dat[i].hnummer); }
Viel. könnt ihr mir mal sagen, warum das nicht funzt. Wenn man z.B. mehrere Daten eingibt, spuckt der ganz komische Werte wieder raus.
MFG
-
Der Array Index fängt bei Null an... p[0] == *p