Question

J'essaie d'écrire un programme qui lit le texte d'un fichier externe (string string int, par ligne). La structure est définie en dehors de la fonction principale:

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

Je n'ai pas besoin de " clovek " être un tableau comme avec chaque ligne, les données peuvent être écrasées. La ligne est mise en mémoire tampon avec:

fgets(buffer, 50, datafile);

Ensuite, je veux l'analyser dans la structure, mais c'est là que mon problème se pose:

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

Et cela me donne une erreur: identifiant attendu ou jeton '(' avant '.' '

Je voulais aussi utiliser ce code pour le débogage, mais cela donne aussi une autre erreur:

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

erreur: expression attendue avant 'clovek'

Je suppose que j'ai totalement mal compris l'utilisation de struct.

Était-ce utile?

La solution

clovek est un alias de struct Person . Supprimez le mot clé typedef ou créez un objet de type struct Person quelque part dans votre code. Avec le code actuel, vous pouvez faire:

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */

Autres conseils

Votre déclaration définit clovek comme un alias de la structure Person.

Supprimer " typedef " de la déclaration. De cette façon, clovek devient une variable de type Personne:

Ou mieux encore, séparez la déclaration de structure de la déclaration de variable:

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

struct Person clovek;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top