c, problemene med å bruke struct

stemmer
2

Jeg prøver å skrive et program som leser tekst fra ekstern fil (string string int, per linje). Struct er definert utenfor hovedfunksjon:

typedef struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
} clovek;

Jeg trenger ikke clovek for å være en matrise som med hver linje data kan overskrives. Line er rød å buffer med:

fgets(buffer, 50, datafile);

Deretter vil jeg analysere det til struct, men det er der mitt problem oppstår:

int i = 0;
while (buffer[i] != ' ') {
  clovek.fname[i] = buffer[i];
  i++;
}

Og dette gir meg en feil: forventet identifikator eller '(' før token ''

Jeg ønsket også å bruke denne koden for feilsøking, men det gir ut en annen feil også:

printf(fname, %s\n, clovek.fname);

error: forventet uttrykk før 'clovek'

Min gjetning er at jeg totalt misforstått hjelp av struct.

Publisert på 01/05/2009 klokken 18:57
kilden bruker
På andre språk...                            


2 svar

stemmer
10

cloveker et alias for struct Person. Enten fjerne typedefsøkeordet, eller lage et objekt av type struct Personsted i koden din. Med dagens koden kan du gjøre:

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */
Svarte 01/05/2009 kl. 19:00
kilden bruker

stemmer
5

Din uttalelse definerer clovek som et alias til strukturen Person.

Fjern "typedef" fra erklæringen. På denne måten blir clovek en variabel av typen Person:

Eller enda bedre, separat struct erklæring fra variabeldeklarasjon:

struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
};

struct Person clovek;
Svarte 01/05/2009 kl. 19:00
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more