【发布时间】:2014-05-03 11:47:58
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
struct not{
int id,hw,mdt,fnl;
char name[20];
char lname[20];
}rec;
int main(){
FILE *fp1,*fp2;
char a1[3]="A",a2[3]="B",a3[3]="C",a4[3]="D",a5[3]="F";
float numgrade;
char letgrade[3];
我得到了 inf.txt 文件,其中包含 10 个学生的 ID,NAME,LAST NAME,HOMEWORK GRADE,MIDTERM 和 FINAL GRADE。
fp1=fopen("inf.txt","r"); fp2=fopen("outf.txt","w");
while( !feof(fp1)){
fscanf(fp1,"%d %s %s %d %d %d\n",&rec.id,rec.name,rec.lname,&rec.hw,&rec.mdt,&rec.fnl);
numgrade = (0.15)*rec.hw + (0.35)*rec.mdt + (0.5)*rec.fnl;
我在 if-else if 部分的赋值错误中遇到了不兼容的类型
if(numgrade>=0 && numgrade <=40) letgrade=strcat(a5,a5); else if(numgrade>=41 && numgrade<=45) letgrade=strcat(a4,a4); else if(numgrade>=46 && numgrade<=52) letgrade=strcat(a4,a3); else if(numgrade>=53 && numgrade<=60) letgrade=strcat(a3,a3); else if(numgrade>=61 && numgrade<=69) letgrade=strcat(a3,a2); else if(numgrade>=70 && numgrade<=79) letgrade=strcat(a2,a2); else if(numgrade>=80 && numgrade<=89) letgrade=strcat(a2,a1); else if(numgrade>=90) letgrade=strcat(a1,a1);
fprintf(fp2,"%d %-12s %-12s %3d %3s",rec.id,rec.name,rec.lname,numgrade,letgrade);
}
fclose(fp1);
fclose(fp2);
system("pause");
return 0;
}
我在 SOF 的赋值错误中搜索了不兼容的类型,但找不到对我的代码有用的东西。
【问题讨论】:
-
您不能分配给数组。
-
如果你知道strcat,你也应该知道strcpy。无法使用
=分配字符串(某些初始化情况除外) -
将
char letgrade[3]更改为char * letgrade。 -
strcat(a4,a4);导致未定义的行为。strcat的操作数不能重叠。即使您的代码似乎可以工作,您也应该将其替换为定义明确的代码。 -
while(!feof(fp1))是错误的。 C 不是帕斯卡。直到 读取后才会检测到 EOF。
标签: c compiler-errors runtime-error incompatibletypeerror