c, problemas com a utilização struct
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.
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;