非常抱歉,我犯了同样的错误。您在data.h头文件中正确地定义了name为字符数组。我注意到您在create_data.c文件中的函数名字拼写不一致,应该是createdata而不是create_data。以下是修复后的代码:
main.c#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "data.h"
struct status health, hunger;
int main(void) {
strcpy(health.name, "health");
health.value = STATUS_MAX_VALUE;
strcpy(hunger.name, "hunger");
hunger.value = STATUS_MAX_VALUE;
createdata(health);
createdata(hunger);
return 0;
}
createdata.c#include <stdio.h>
#include <stdlib.h>
#include "data.h"
void createdata(struct status status) {
FILE *fp = fopen("game.dat", "a");
if (!fp) {
perror("\033[31merror\033[0m: fopen failed in createdata");
exit(EXIT_FAILURE);
}
fprintf(fp, "%s=%d\n", status.name, status.value);
fclose(fp);
}
data.h#ifndef DATA_H
#define DATA_H
#define STATUS_NAMELEN_MAX 10
#define STATUS_MAX_VALUE 100
struct status {
char name[STATUS_NAMELEN_MAX];
int value;
};
void createdata(struct status status);
#endif
现在,编译并运行程序,game.dat的内容应该是:game.dat
health=100
hunger=100
非常抱歉给您带来困扰,希望这次回答能够解决问题。如果还有任何疑问,请随时提出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |