Frage
Ich versuche, ein Programm zu schreiben, das liest text aus externer Datei (string string, int, pro Zeile).Struct definiert ist, außerhalb der main Funktion:
typedef struct Person {
char fname[15];
char lname[20];
unsigned long int birth;
} clovek;
Ich brauche das nicht "clovek", um ein array wie bei jeder Zeile können die Daten überschrieben werden.Linie ist rot-Puffer mit:
fgets(buffer, 50, datafile);
Dann möchte ich analysieren, um die Struktur, aber das ist, wo mein problem besteht:
int i = 0;
while (buffer[i] != ' ') {
clovek.fname[i] = buffer[i];
i++;
}
Und dies gibt mir einen Fehler:erwartet identifier or '(' before '.' token
Ich wollte auch verwenden Sie diesen code für das Debuggen, aber es gibt eine andere Fehlermeldung als gut:
printf("fname, %s\n", clovek.fname);
Fehler:erwarteter Ausdruck vor 'clovek'
Meine Vermutung ist, dass ich Total falsch verstanden Verwendung von struct.
Lösung
clovek
ist ein alias für struct Person
.Entfernen Sie entweder die typedef
Schlüsselwort, oder erstellen Sie ein Objekt vom Typ struct Person
irgendwo in Ihrem code.Mit dem vorliegenden code, die Sie tun können:
clovek someone;
while (buffer[ i ] ) != ' ') {
someone.fname[ i ] = buffer[ i ];
/* .. */
Andere Tipps
Ihre Anweisung definiert clovek als alias zu der Struktur der Person.
Entfernen Sie "typedef" aus der Erklärung.Diese Weise clovek wird eine variable vom Typ Person:
Oder noch besser, separate struct-Deklaration von Variablen-Deklaration:
struct Person {
char fname[15];
char lname[20];
unsigned long int birth;
};
struct Person clovek;