【发布时间】:2026-01-02 13:45:01
【问题描述】:
由于某种原因,函数loadPerson 总是返回0 作为输出。
我认为问题与结构PERSON 中的变量分数有关,但我不知道问题是什么。比如不知道保存函数会保存分数的值还是地址的值(因为是指针)。
你能帮我找出问题吗?
#include <stdlib.h>
#include <stdio.h>
#define N 3
typedef struct person{
int age;
float *scores;
} PERSON;
int savePerson(PERSON person, char *fileName){
FILE *file;
int result = 0;
file = fopen(fileName,"wb");
if (file){
if(fwrite(&person,sizeof(PERSON),1,file)>0){
result = 1;
}
}
return result;
}
int loadPerson(PERSON *person, char *fileName){
FILE *file;
int result = 0;
file = fopen(fileName,"rb");
if (file){
if(fread(person,sizeof(PERSON),1,file)>0){
result = 1;
}
}
}
int main()
{
char fileName[15] = "file1.bin";
float scores[3] = {2.0,8.0,9.0};
PERSON p1,p2;
int i;
p1.age = 35;
p1.scores = scores;
printf("Salvando\n");
if(savePerson(p1,fileName)){
printf("Saving OK!\n");
}
else{
printf("Saving BAD!\n");
}
if(loadPerson(&p2,fileName)){
printf("Loading OK!");
printf("AGE: %d\n",p2.age);
printf("SCORES:\n");
for(i=0;i<N;i++){
printf("%f,",p2.scores[i]);
}
printf("\n");
}
else{
printf("Loading BAD!");
}
return 0;
}
【问题讨论】:
-
请定义“无法正常工作”。程序崩溃了吗?是不是让你家着火了?它是否输出了超出您预期的内容,如果是,请详细说明
-
我猜它不会总是返回 0。
-
请对您的问题提供更详细的说明。 is not working proper 之类的表达式无助于找出问题所在。您应该说明您的预期输出是什么,实际输出是什么以及为什么说实际输出是错误的。