gpt4 book ai didi

c - 尝试将结构保存到文件中

转载 作者:行者123 更新时间:2023-11-30 15:26:18 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct data {

char *first;
char *last;
char *email;
int age;
struct data *next;
};

typedef struct data dat;
dat family;
dat family_array[4];
char array[100];

void menu(){
printf("\n1. Father\n");
printf("2. Mpther\n");
printf("3. Son 1\n");
printf("4. Son 2\n");

}

int mode_select(){
int x;
printf("\nMake your choice:");
scanf("%d" ,&x);
return x;
}

打开文件并返回其地址

FILE* load_read(){
FILE *fp;
fp=fopen("Family Data.dat" , "rb");
return fp;
}


FILE* write(){
FILE *fp;
fp=fopen("Family Data.dat" , "wb");
return fp;
}

读取结构体数据

dat new_data( const char *first , const char *last , const char *email , int age){
printf("\nGive first name: ");
scanf("%s" , array );
first=(char*)malloc((strlen(array)+1)*sizeof(char));
strcpy( &(family.first), array);
printf("\nGive last name: ");
scanf("%s" , array);
last=(char*)malloc((strlen(array)+1)*sizeof(char));
strcpy(&(family.last), array);
printf("\nGive email address: ");
scanf("%s" , array);
email=(char*)malloc((strlen(array)+1)*sizeof(char));
strcpy(&(family.email) , array);
printf("\nGive age: ");
scanf("%d" , &(family.age));
return family;
}

将数据从结构保存到文件

void save_to_file(FILE *fp , dat x){
fprintf(fp , "Dataaa:\n ");
fprintf(fp ,"Name: %s %s\n" , x.first , x.last);
fprintf(fp , "Email: %s\n" , x.email);
fprintf(fp , "Age: %d\n" , x.age);

}

将数据保存到数组

void save(x){
family_array[x-1]=new_data(family.first , family.last , family.email , family.age);
}

主要功能

int main(){
int x ,i;
FILE *fp;
for(i=0;i<4;i++){
mode();
x=mode_select();
fp=write();
save(x);
save_to_file(fp , family_array[i]);
}
fclose(fp);

return 0;
}

当使用 save_to_file 函数将数据保存到文件时,程序崩溃了!非常感谢您的帮助!

最佳答案

您的family.first , family.lastfamily.email指针从未初始化,但您可以使用 new_data 中的 strcpy 写入它们

目前尚不清楚您要如何处理 new_data 的参数,以及为什么您从不使用它们的值,而是用新分配的缓冲区替换它,您从不写入也从不释放它

关于c - 尝试将结构保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com