質問

外部ファイルからテキストを読み取るプログラムを作成しようとしています(文字列string int、行ごと)。 構造体はメイン関数の外側で定義されています:

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

" clovek"は必要ありません。すべての行データと同様に配列にすることは上書きできます。 バッファリングするための行は赤です:

fgets(buffer, 50, datafile);

それから構造体に解析したいのですが、それが私の問題が発生する場所です:

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

そして、これによりエラーが発生します:期待される識別子または '('の前に '。'トークンがあります

このコードをデバッグにも使用したかったのですが、別のエラーも発生します:

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

エラー: 'clovek'の前に式が必要です

推測では、構造体の使用を完全に誤解していると思われます。

役に立ちましたか?

解決

clovek は、 struct Person のエイリアスです。 typedef キーワードを削除するか、コードのどこかに struct Person 型のオブジェクトを作成します。現在のコードでできること:

clovek someone;

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

他のヒント

あなたのステートメントは、構造Personのエイリアスとしてclovekを定義しています。

" typedef"を削除宣言から。このようにして、clovekはPerson型の変数になります。

さらに良いことに、構造体宣言と変数宣言を分けます:

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

struct Person clovek;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top