einige fragen zu struct
-
hi, ich bins mal wieder nach etwas längerer zeit, bin im moment etwas krank kann nichtmal zur fh gehen aber würde natürlich trotzdem gerne meine aufgaben erledigen um die prüfung zu bestehen. leider habe ich starke probleme mit den structs..
hier ein beispielcode von mir
typedef struct katalog{ char* bestellnummer; char* artikelbezeichnung; double preis;
meine aufgabe ist es nun, einzelne werte zu vergeben, das heist für jeden artikel eine bestellnummer, artikelbezeichnung und einen preis festzulegen. der vektor speichert alle 3 eigenschaften und dann soll der nächste wert in den vektor eingetragen werden..
wenn ich damit fertig bin, muss ich mit hilfe von pointern dem user einige optionen zur auswahl stellen: alle bisheringe artikel auflisten,- einen bestimmen artikel suchen( nach bestellnummer ),- neuen artikel dem katalog hinzufügen,- ...
ich bin echt verzweifelt wie gesagt ich bin krank... bin gerade ins internet kaffee gehumpelt weil ich grad kein i-net zuhause habe..einige zufälle die im Ganzen in einer katastrophe enden wenn mir keiner hilft -.-
ich bedanke mich schonmal im vorraus und melde mich in einigen stunden noch einmal.
viele grüße
Steffen
-
Wo ist die Frage?
-
Hmmmm...
wenn ich dich richtig verstanden habe, willst du sowas machen:
typedef struct katalog{ char* bestellnummer; char* artikelbezeichnung; double preis; }arr[100]; arr[0].bestellnummer = "123"; arr[0].artikelbezeichnung = "Irgendwas"; arr[0].preis = 5000;
Hast du sowas gemeint?
-
ja genau so nur dass ich die gesamten datensätze in so wenig schritten wie möglich eintragen lassen will. ( Dies wäre vorteilhaft, vor allem wenn ich mehrere Datensätze zB wie in der aufgabenstellung 10 habe..)
ansonsten will ich den ganzen kram noch mit pointern abrufen können:
1.) nach daten SUCHEN ( per artikelnummer )
2.) alle artikel auflisten
3.) artikel hinzufügen
4.) warenkorb erstellen, der gesamtpreis erreichnet und alle waren zusammenrechnet die ich auisgewählt habe.gruß
steffen
-
Hi,
Je nachdem ob es deine Aufgabenstellung erlaubt, kannst du dir einiges
an Arbeit sparen, wenn du Arrays konstanter Länge benutzt:#define SMAXLEN BUFSIZ #define ARTIKEL 512 typedef struct { char bestellnummer[SMAXLEN]; char artikelbezeichnung[SMAXLEN]; double preis; }Artikel; Artikel artikel[ARTIKEL] = {0}; // Hier kommt der ganze Kram rein :D unsigned n = 0; // Anzahl der gespeicherten Artikel im Strukturarray. int artikel_hinzufuegen ( char* bnr, char* abez, double preis ) { if ( n + 1 == ARTIKEL ) return 1; // ... n++; return 0; } int eingabe_pruefen ( char* bnr, char* abez, double preis ) { // ... } int artikel_eingabe() { double preis = 0.0; char bnr[SMAXLEN] = {0}, abez[SMAXLEN] = {0}; if ( 3 != scanf ( "%s %s %d", bnr, abez, &preis )) return 1; // Daten der Eingabe prüfen und in Struktur übernehmen. return 0; }
Gruß,
B.B.
-
so war ja imemrnoch krank...ich werde es mir JETZT SOFORT einmal anschauen..sieht auf den ersten blick sofort einleuchtender aus als meine "version"...
ich werde mich morgen noch einmal meldenGruß
Steffen
-
okey ich bin hier wieder auf das alte problem gestoßen...
hier bekomme ich folgenden fehler:
expected primary-expression before '{' token
expected `;' before '{' tokenhier die stelle:
#include <stdio.h> #define MAX BUFSIZ #define ARTIKEL 512 typedef struct{ char bestellnummer[MAX]; char artikelbezeichnung[MAX]; char kurzbeschreibung[MAX]; double preis; }Artikel; Artikel artikel[MAX]; unsigned n = 0; int main(){ artikel[n]={"3319","sinnlos","cooles teil",25.00}; // <----- !?!? printf("%s %s %s %d",artikel[n]); getchar(); return 0; }
-
Hallo,
eine Struktur kann ihre Werte nicht nachträglich auf diese Weise bekommen. Du musst jede Komponente einzeln zuweisen, z.B.:
strcpy(artikel[n].bestellnummer, "3319"); strcpy(artikel[n].artikelbezeichnung, "sinnlos"); ...
MfG,
Probe-Nutzer