分からないプログラムエラーがあるんですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まだ未熟

分からないプログラムエラーがあるんですが・・・

#1

投稿記事 by まだ未熟 » 18年前

実は、習ったのを復習しようと家でやってみたんですが、
どうしても、分からないエラーがあります。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"compa4.h"

int check (FILE **);
int recordin (FILE *, struct class *p);
void tansak (FILE *, struct class *q, int *N);
void output (struct class *q);


void main (void)
{
FILE *fp;
struct class d;
int M;
int No = 0;

M = check(&fp);

if(M == NULL || M == EOF)
{
exit(1);
}

while(No != 0)
{
fseek(fp, 0, SEEK_SET);
printf("出席番号 ==");
scanf("%d", &No);
tansak(fp, &d, &No);
}
fclose(fp);

}

int check (FILE **fo)
{
struct class h;
int ren;

if((*fo = fopen("TEST4S01.DAT","r")) == NULL)
{
printf("ファイルのオープンエラー\n");
ren = NULL;
}
else
{
ren = recordin(*fo, &h);
if(ren == EOF)
{
printf("データはありません");
}
fseek(*fo, 0, SEEK_SET);
}
return ren;
}

int recordin (FILE *fn, struct class *p)
{
int ret;

ret = fscanf(fn, "%2d%10s%3d%3d%3d*c", &(p->personNo), p->name, &(p->eigo),
&(p->suga), &(p->koku));

return ret;
}

void tansak (FILE *fk, struct class *k, int *N)
{
int F;

F = recordin(fk, k);

while((*N != '^Z')&&(F != EOF))
{
if(*N == k->personNo)
{
if((-1> k->eigo)&&(k->eigo >101))
{
printf("点数のerror\n");
break;
}
if((-1> k->suga)&&(k->suga >101))
{
printf("点数のerror\n");
break;
}
if((-1> k->koku)&&(k->koku >101))
{
printf("点数のerror\n");
break;
}
else
{
output(k);
break;
}
}
else
{
F = recordin(fk, k);
}
}
if(F == EOF)
{
printf("データが見つかりません\n");
}
}

void output (struct class *q)
{
int total;
total = q->eigo + q->suga + q->koku;
printf("%6d %10s %3d %3d %3d %3d %3d", (q->personNo), (q->name), (q->eigo), (q->koku), (total), ((total)/3));
}

上のプログラムを実行して、下のようなエラーが出ました。
6 : 宣言に型が多すぎる。
19 : 不正な構造体の演算(main)
38 : 'check'の再宣言で型が一致してない
6 : 一つ前の'check'の定義

このプログラムは一度コンパイルできたんですが、内容はほぼ同じなのに、
家でやるとなぜかこういうエラーがでました。
自分の頭じゃどう見ても間違いはないように見えるんですが、どこが間違っているのでしょうか?

YuO

Re:分からないプログラムエラーがあるんですが・・・

#2

投稿記事 by YuO » 18年前

compa4.hは正しいヘッダファイルですか?
恐らく,宣言が終了していないなどの問題が存在するのだと思いますが。

なぎ

Re:分からないプログラムエラーがあるんですが・・・

#3

投稿記事 by なぎ » 18年前

既に、YuO さんから回答があるとおりだと思います。

具体的には、
#compa4.h

の中にある、

sturcut class {
char name[100];
int personNo;
int koku;
int suga;
int eigo;
}

といった感じの宣言の最後の、; が抜けている可能性が非常に高いと思われます。

まだ未熟

Re:分からないプログラムエラーがあるんですが・・・

#4

投稿記事 by まだ未熟 » 18年前

YuOさん、なぎさんありがとうございます。
確かに調べた結果、お二人のおっしゃるとおり、宣言の最後に;が抜けていました。
てっきり、プログラムの方に問題があると思っていました。

閉鎖

“C言語何でも質問掲示板” へ戻る