【发布时间】:2013-06-30 08:13:18
【问题描述】:
我在使用fwrite 和fread -> fread (void*, size_t, size_t, FILE*); 的程序时遇到了一些问题,当设置第二个size_t 作为任何非零的数字时,它不起作用。
这是代码;如果有人可以提供帮助,我将不胜感激。
P.S.:如果我在 read 和 write 函数上替换那个 sc,它可以工作,但不像预期的那样。
#include<stdio.h>
#include<stdlib.h>
#define TAM 10
#define sc 5
typedef struct str_score{
float scr;
char nome[TAM];
}score;
int main(){
FILE *arq;
int x;
score a[sc], i={0.00,"-empty-"};
if ((fopen("highscore.bin", "wb+"))==NULL){
perror("Erro na abertura do arquivo\n");
return 1;
}
fwrite(&i,sizeof(score), sc, arq);
fread(a ,sizeof(score), sc, arq);
for (x=0;x<sc;x++){
printf("%s %.2f", a[x].nome,a[x].scr);
}
return 0;
}
【问题讨论】:
-
只是您的编译器会通过发出错误的机器代码来惩罚您的代码格式。
-
(说真的,格式化/缩进你的代码并检查
fread()和fwrite()的返回值。)