c, problèmes d'utilisation de struct
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.
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;