Avatar billede mollmannj Nybegynder
23. oktober 2002 - 12:25 Der er 11 kommentarer og
2 løsninger

Struct i linux

vi sidder og koder C i linux og kan ikke få denne bid kode til at virke:

#include<stdio.h>

struct varegruppe
{
int pris;
char navn[30];
};

int main()
{
varegruppe bukser;
 

exit(0);
}

denne bid kode kan ikke køre. det burde den sgu da!!!!
evt. også svar på hvordan man tilføjer dataerne under bukser.
Avatar billede arne_v Ekspert
23. oktober 2002 - 12:30 #1
Hvilken fejl får i ?

Umiddelbart ser det OK ud - bortset fra at I måske skulle
inkludere stdlib.h, fordi jeg mener det er der exit bliver erklæret.

I kan skrive:
  bukser.pris = 200;
  strcoy(bukser.navn, "Lewis");
Avatar billede kamikaze Nybegynder
23. oktober 2002 - 12:46 #2
Hvad med:

typedef struct _varegruppe
{
int pris;
char navn[30];
} varegruppe;
Avatar billede arne_v Ekspert
23. oktober 2002 - 12:50 #3
Yes !

Eller bare:
  struct varegruppe bukser;
Avatar billede kamikaze Nybegynder
23. oktober 2002 - 12:50 #4
Hmmmm....Det burde køre uden, hvis i (som arne_v siger) inkluderer stdlib.h
Avatar billede kamikaze Nybegynder
23. oktober 2002 - 12:50 #5
Er det C eller C++???
Avatar billede arne_v Ekspert
23. oktober 2002 - 12:55 #6
De skrev C.

Og så skal struct eller typedef med, hvis jeg husker rigtigt.
Avatar billede morten_grouleff Nybegynder
23. oktober 2002 - 13:01 #7
"struct" og "typedef" har hver sit navnerum i C. Det betyder at typen

struct foo { int i } ;

ikke har noget at gøre med typen

typedef char* foo;

Derfor skriver man ofte

typedef struct foo {
  int i;
} foo;

Herefter er typerne "struct foo" og "foo" ens. Hvis man ikke bruger typen "struct foo" til noget kan man udelade navnet:

typedef struct {
  int i;
} foo;
Avatar billede arne_v Ekspert
23. oktober 2002 - 13:09 #8
Ja. Det er kamikaze og mig jo allerede blevet enig om.
Avatar billede morten_grouleff Nybegynder
23. oktober 2002 - 13:24 #9
Nå?

I har fint foreslået hvad der skal til for at lige netop det eksempel kompiler. Men jeg synes ikke det var klare svar, f.eks. har include af stdlib ikke noget at gøre med om man skal skrive struct eller ej :)

Jeg har forsøgt at forklare hvad det bagvedliggende problem er, nemlig de forskellige navnerum i C. Om det er et bedre eller ringere svar afhænger nok af læseren.
Avatar billede mollmannj Nybegynder
23. oktober 2002 - 13:25 #10
Arne_v har du mulighe dfor evt. at uddybe eks. med
bukser.pris = 200;
strcoy(bukser.navn, "Lewis");
bliver det skrevet under struct varegruppe bukser eller hvad?
Avatar billede morten_grouleff Nybegynder
23. oktober 2002 - 13:29 #11
Han mente nok:

typedef struct
{
  int pris;
  char navn[30];
} varegruppe;
int main()
{
  varegruppe bukser;
  bukser.pris = 200;
  strcpy(bukser.navn, "Lewis");

exit(0);
}
Avatar billede kamikaze Nybegynder
23. oktober 2002 - 14:06 #12
morten grouleff >> Du skriver "...I har fint foreslået hvad der skal til for at lige netop det eksempel kompiler...". Er det ikke også netop det der er formålet med eksperten????
Avatar billede morten_grouleff Nybegynder
24. oktober 2002 - 08:18 #13
jo!

Men jeg synes godt man kan træde et skridt tilbage og forsøge at forklare hvorfor eksemplet skal rettes på den måde. Det lærer man mere af end "skriv bare sådan her".
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester