Brauche Hilfe bei Struct
-
Hm joa okay...wie würde man dann den Speicher dafür allozieren? Mit (ArtikelTyp*)malloc(sizeof(ArtikelTyp))?
-
Gleich sagt wieder jemand, daß man malloc nicht casten soll.
-
for (i = 0; i < 100; i++) { Artikel[i] = malloc (sizeof (*Artikel)); }
Und um auf die Variablen der Struktur zugreifen zu können:
Artikel[3][0].preis Artikel[3][0].bezeichnung
Der zweite Index muss hier immer 0 sein.
-
Also jetzt kommt immer:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <ctype.h>struct Schreibwaren{
float preis;
char bezeichnung[100];
char eigenschaft[100];
}ArtikelTyp;int main(){
FILE* Textdatei;
ArtikelTyp* Artikel[100];
int i=0;
char s=NULL;for (i = 0; i < 100; i++) {
Artikel[i] = malloc (sizeof (*Artikel));
}Textdatei = fopen("C:\\liste.txt" , "r");
if(Textdatei==NULL)printf("Datei wurde nicht gefunden.");
for(i=0;s!=EOF || i<99;i++)
{
s=fgetc(Textdatei);
Artikel[i]=s;
printf("%c", Artikel[i]);
}
fclose(Textdatei);
Artikel[i]='\0';getch();
return 0;
}: error C2065: 'Artikel': nichtdeklarierter Bezeichner
: error C2065: 'Artikel': nichtdeklarierter Bezeichner
: error C2065: 'Artikel': nichtdeklarierter Bezeichner
: error C2070: ''unknown-type'': Ungültiger sizeof-Operand
: error C2065: 'Artikel': nichtdeklarierter Bezeichner
: error C2065: 'Artikel': nichtdeklarierter Bezeichner
: error C2065: 'Artikel': nichtdeklarierter Bezeichner
-
Es fehlt der zweite Index bei Artikel.
-
Hm, also man soll ja den kompletten Text in ein Feld einlesen.
Für was steht jetzt der 2. Index?
Müsste man dann das so schreiben?:
Artikel[i][0]=s;
-
Nimm fscanf zum Einlesen:
fscanf (Textdatei, "%f %100s %100s", &Artikel[i][0].preis, Artikel[i][0].bezeichnung, Artikel[i][0].eigenschaft);
pAiSTe schrieb:
Für was steht jetzt der 2. Index?
Der steht für das (unnötig) allozierte Element.
-
hellseher schrieb:
Gleich sagt wieder jemand, daß man malloc nicht casten soll.
Nee, ich werd' einfach nur blind ohne c/c++- Tags.
Achje, das war jetzt nicht so wirklich konstruktiv
-
Hm nagut ich werde nochmal über alles drüberschaun und nachdenken...dann hab ich nochmal ne kurze aufgabe aber bin mir da nicht so sicher...wie legt man da den Typ fest?
Und zwar:
Welchen Wert und welchen Typ haben folgende Ausdrücke?
a) 19/4.0
b) 19/5
c) 62L
d)(double)(5/3)
e) (float) 4/3
f) 1,14
g) 12/5+3.2
h) -128
i) (char) 65/'A'
J)32UL
-
Welchen Wert und welchen Typ haben folgende Ausdrücke?
Wenn du castest oder Präfix-Literale verwendest, immer den gewünschten. Sonst den "einfachsten", der den Wert aufnehmen kann.
-
mit "einfachsten" meinst du Priorität oder Bytes?