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.

War es hilfreich?

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top