#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;
}
的PROGRAMM崩溃,当它的时间来保存数据与save_to_file机能的研究,以文件! 非常感谢您的帮助!
不要命名你的函数write()。这是写入文件的Linux低级功能。但我不认为这是导致你的问题,stdio应该是安全的这个名称冲突。 – Barmar 2014-12-10 22:43:49
您是否尝试过附加调试器并逐步执行该程序? – Barett 2014-12-10 22:45:31
您是否曾尝试在调试器中运行该程序,并查看'save_to_file'函数中的变量值? – Barmar 2014-12-10 22:45:49