我在使用fwrite
和fread -> fread (void*, size_t, size_t, FILE*);
的程序時出現了一些問題,當設置的第二個size_t
與任何不同於零的數字不起作用時。 這是代碼;它不以這種方式工作,如果有人可以幫助,我將不勝感激。fread和fwrite的問題
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;
}
這只是因爲您的編譯器通過發送錯誤的機器碼來懲罰您的代碼的格式。 – 2013-06-30 08:16:20
(嚴格來說,格式化/縮進你的代碼並檢查'fread()'和'fwrite()'的返回值。) – 2013-06-30 08:16:48