我在读和写文件时遇到了问题。我使用fwrite并编写了大量的struct数组。之后,如果没有文件,我会写信给文件。
如果在文件的第一个字节上有多少胜利者在文件中定义,但我无法在文件中得到正确的数字,除非我手动打开它并写入例如3,那么它就会出现,否则它不会出现。
你能找到我的问题吗?
然后将vinnare[].name写为空,它不能使用NULL :/
struct vinnare{
int ar;
char namn[20];
};
main(){
int a, val, antalvinnareinlasning,test=0;
struct vinnare *vinnare;
FILE *file;
file = fopen("F:\\Uppgifter.txt", "rt")
if (file == NULL){
printf("Hej2");
vinnare = NULL;
printf("Ange antal vinnare:");
scanf("%d", &antalvinnareinlasning);
vinnare = (struct vinnare *)malloc(antalvinnareinlasning*sizeof(struct vinnare));
vinnare = inlasningTillFil(vinnare, antalvinnareinlasning);
}
else{
**fscanf(file, "%b", &test);
printf("%d",test);**
fflush(stdin);
getchar();
}
}
struct vinnare *inlasningTillFil(struct vinnare *vinnare, int antalvinnareinlasning){
int a, temp;
FILE *file;
file = fopen("F:\\Uppgifter.txt", "wt");
**vinnare[0].ar = antalvinnareinlasning;**
**strcpy(vinnare[0].namn, "");** //What should it say to make it empty?
**fwrite(&vinnare[0], sizeof(struct vinnare),1, file);**
for (a = 1; a < (antalvinnareinlasning + 1); a++){
printf("year: ");
scanf("%d", &temp);
vinnare[a].ar = temp;
fflush(stdin);
printf("Winner that year:");
fgets(vinnare[a].namn, 40, stdin);
fflush(stdin);
fwrite(&vinnare[a], sizeof(struct vinnare),1, file);
}
}发布于 2014-01-12 17:55:42
fscanf解析字符串(通常用fprintf编写);fread读取二进制数据(通常用fwrite编写)。你把fscanf和fwrite配对了。
%b也不是fscanf的标准格式说明符,但由于我建议在本例中完全脱离fscanf,所以我不会深入研究这一点。
https://stackoverflow.com/questions/21078080
复制相似问题