Pregunta

Estoy intentando escribir un programa que lee texto de un archivo externo (cadena de caracteres int, por línea). Struct se define fuera de la función principal:

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

No necesito " clovek " para ser una matriz como con cada línea de datos se puede sobrescribir. La línea es roja para amortiguar con:

fgets(buffer, 50, datafile);

Luego quiero analizarlo a la estructura pero ahí es donde surge mi problema:

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

Y esto me da un error: identificador esperado o '(' antes de '.' token

También quería usar este código para la depuración, pero también genera otro error:

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

error: expresión esperada antes de 'clovek'

Mi conjetura es que entendí totalmente mal el uso de struct.

¿Fue útil?

Solución

clovek es un alias para struct Person . Quite la palabra clave typedef , o cree un objeto de tipo struct Person en algún lugar de su código. Con el presente código puedes hacer:

clovek someone;

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

Otros consejos

Su declaración define clovek como un alias a la estructura Person.

Eliminar " typedef " de la declaración. De esta manera, clovek se convierte en una variable de tipo Person:

O incluso mejor, declaración de estructura separada de declaración de variable:

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

struct Person clovek;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top