Pergunta

Eu estou tentando escrever um programa que lê o texto do arquivo externo (int string string, por linha). fora struct é definido de função principal:

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

Eu não preciso "clovek" para ser um array como com cada linha de dados pode ser substituído. Linha é vermelho para o buffer com:

fgets(buffer, 50, datafile);

Então eu quero analisá-lo para a estrutura, mas que é onde o meu problema surge:

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

E isso dá-me um erro: esperado identificador ou '(' antes de token

''

Eu também queria usar este código para depuração, mas ele dá outro erro bem:

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

erro: esperado expressão antes de 'clovek'

Meu palpite é que eu totalmente mal interpretado utilizando da estrutura.

Foi útil?

Solução

clovek é um alias para struct Person. Remova a palavra-chave typedef, ou criar um objeto de algum tipo struct Person em seu código. Com o presente código que você pode fazer:

clovek someone;

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

Outras dicas

Seus define declaração clovek como um alias para a Pessoa estrutura.

Remove "typedef" da declaração. Desta forma, clovek torna-se uma variável do tipo Pessoa:

Ou melhor ainda, declaração struct separada da declaração da variável:

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

struct Person clovek;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top