Kombidatentyp Struktur in C

Gast #2650045
Lesenswert?

Guten Tag,

ich habe mein erstes Testprogramm für eine Struktur getippt. Ich habe 3 
Punkte, welche mir nicht ganz klar sind(als Kommentare im Code). Ich 
bitte euch um eine ganz kurze Erklärung.

Vielen Dank!
1
#include <stdio.h>
2
#include <string.h>
3

4
struct lagerverwaltung
5
{
6
 int artikelnummer;
7
 char artikelbezeichnung[100]; //[100] seit wann Größenangabe char???
8
 int artikelanzahl;
9
};
10

11
int main()
12
{
13
  struct lagerverwaltung artikel;
14
  
15
  artikel.artikelnummer=1234567890; //Wieso darf 0 nicht am Anfang stehen?
16
  strcpy(artikel.artikelbezeichnung, "Testartikel 1234567890"); //strcpy???
17
  artikel.artikelanzahl=123;
18
  
19
  printf("Artikelnummer: %d\n", artikel.artikelnummer);
20
  printf("Artikelbezeichnung: %s\n", artikel.artikelbezeichnung);
21
  printf("Artikelanzahl: %d\n\n", artikel.artikelanzahl);  
22
  
23
  system("PAUSE");  
24
  return 0;
25
}
#2650053
Lesenswert?

Da Mo schrieb:
> Guten Tag,
>
> ich habe mein erstes Testprogramm für eine Struktur getippt. Ich habe 3
> Punkte, welche mir nicht ganz klar sind(als Kommentare im Code). Ich
> bitte euch um eine ganz kurze Erklärung.

Ich finde mich im Zwiespalt wieder.
Alle deine 3 Fragen sind von der Sorte:
Die Antwort darauf findet sich in jedem noch so grindigem C-Buch und die 
Kentnis der Antworten auf diese Fragen sind eigentlich auf dem Level von 
'Kapitel 4 von 30'.

Besorg dir ein C-Buch (einige gibts auch als Online-Version). Du hast 
einfach mehr davon, wenn du nicht durch Fragen in einem Forum dein 1/8 
Wissen anlassbezogen auf 1/4 Wissen upgradest sondern wenn du 
stattdessen systematisch in die Geheimnisse von C eingeführt wirst. Und 
zwar mit den relevanten Details, wie zb: "Wie funktioniert eigentlich 
String-Verarbeitung in C?" In jedem noch so grindigem C-Buch ist das ein 
eigenes Kapitel und normalerweise einer der ersten Stolpersteine für 
jeden C-Lernenden.
Und ja. Dieses Kapitel kommt lange vor Strukturen.

Frage 1: Schon mal was von Arrays gehört?
Frage 2: Weil alle Zahlen, die mit 0 beginnen, Oktalzahlen sind
Frage 3: Weil Arrays nicht zuweisungskompatibel sind.
#2650147
Lesenswert?

und wenn das dann geklärt ist, mal in einer schwachen Stunde (abends, 
wenn man nicht einschlafen kann) über die Frage nachdenken:

Ist eigentlich Alles was wir im Alltag als "...nummer" bezeichnen auch 
eine Nummer im mathematischen Sinn?

Beispiele:
  Telefon-'Nummer'    +43 732 148763
  Serien-'Nummer'     SN87-4532-867
  Segel-'Nummer'      AUT 79
  Artikel-'Nummer'    AC856/52-BLAU
  ....

Sind das tatsächlich "Nummern" im mathematischen Sinne? Ist daher ein 
Datentyp wie int oder long dafür angebracht oder nicht?
Gast #2650206
Lesenswert?

Da Mo schrieb:
> int -> 4Byte

Wenn das in deinem C-Buch steht, wirf es weg. Es sei denn, es handelt 
sich um ein Buch speziell für den PC. Dann kauf dir zusätzlich ein 
C-Grundlagenbuch.

> Wo liegt das Problem?

Daß in C int auch nur 16 Bit breit sein kann. Es hängt vom Compiler ab.m 
Und es gibt eigentlich kaum einen Grund, int zu verwenden, wenn man 32 
Bit zwingend voraussetzt. long wäre dann besser geeignet, oder gleich 
einer von den Typen aus stdint.h wie z.B. int_least32_t.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren