実は、習ったのを復習しようと家でやってみたんですが、
どうしても、分からないエラーがあります。
#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'の定義
このプログラムは一度コンパイルできたんですが、内容はほぼ同じなのに、
家でやるとなぜかこういうエラーがでました。
自分の頭じゃどう見ても間違いはないように見えるんですが、どこが間違っているのでしょうか?
分からないプログラムエラーがあるんですが・・・
Re:分からないプログラムエラーがあるんですが・・・
既に、YuO さんから回答があるとおりだと思います。
具体的には、
#compa4.h
の中にある、
sturcut class {
char name[100];
int personNo;
int koku;
int suga;
int eigo;
}
といった感じの宣言の最後の、; が抜けている可能性が非常に高いと思われます。
具体的には、
#compa4.h
の中にある、
sturcut class {
char name[100];
int personNo;
int koku;
int suga;
int eigo;
}
といった感じの宣言の最後の、; が抜けている可能性が非常に高いと思われます。
Re:分からないプログラムエラーがあるんですが・・・
YuOさん、なぎさんありがとうございます。
確かに調べた結果、お二人のおっしゃるとおり、宣言の最後に;が抜けていました。
てっきり、プログラムの方に問題があると思っていました。
確かに調べた結果、お二人のおっしゃるとおり、宣言の最後に;が抜けていました。
てっきり、プログラムの方に問題があると思っていました。