#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#define MAX 3
struct day
{
int month;
int day1;
};
struct mydata
{
char name[20];
struct day birthday;
char telnum[20];
};
int main(void)
{
int f1,i=0,j;
char ch;
struct mydata *a[MAX],*p;
f1=open("C:\\list.bin",O_APPEND|O_WRONLY|O_BINARY);
if((f1!=-1))
{
do
{
printf("input the name:");
gets(a[i]->name);
printf("input the birthday(day):");
scanf(" %d",a[i]->birthday.day1);
printf("input the birthday(month):");
scanf(" %d",a[i]->birthday.month);
getchar();
printf("input the telphonenumber:");
gets(a[i]->telnum);
printf("still input (press n ou N to quie)?");
scanf(" %c",&ch);
getchar();
i++;
}while((ch!=78)&&(ch!=110)&&(i<MAX));
for(i=0;i<MAX-1;i++)
{
if(strcmp(a[i]->name,a[i+1]->name)>0)
{p=a[i];a[i]=a[i+1];a[i+1]=p;}
}
for(i=0;i<MAX;i++)
write(f1,&a[i],sizeof(a[i]));
close(f1);
printf("Data accepted!!\n");
}
else
printf("\nFile Opening Failure!!\n");
}
帮我看一下。我输入到DAY过后就出现系统错误。弹出该内存不能WRITTEN???
先建一个list.bin在C盘里哟~搞完这个再去看单内存。哈哈!
[此贴子已经被作者于2006-6-27 9:18:48编辑过]
----------------解决方案--------------------------------------------------------
/*帮楼主改了一下,请楼主再试再自添功能*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 3 /*调试成了再改大数*/
struct day
{
short int month;
short int day1;
};
struct mydata
{
char name[20];
struct day birthday;
double telnum; /*用double记录11位电话号码*/
};
void creat1();
void input();
void output();
main()
{ while(1)
{
int i;
printf("0.return to system.\n");
printf("1.input the data.\n");
printf("2.output the data.\n");
printf("please choose:");
scanf("%d",&i);
getchar();
switch(i)
{
case 0: exit(0);
case 1: input();break;
case 2: output();break;
}
}
}
void input()
{
FILE* f1;
int i=0;
struct mydata a[MAX];
f1=fopen("c:\\phone.bin","wb");
if(f1==NULL)exit(1);
do
{
printf("input the name %d:",i+1);
gets(a[i].name);
printf("input the birthday(mm-dd):");
scanf("%d-%d",&a[i].birthday.month,&a[i].birthday.day1);
printf("input the telphone number:");
scanf("%ld",&a[i].telnum);
fflush(stdin);
fwrite(&a[i],sizeof(a[i]),1,f1);
}
while(++i<3);
fclose(f1);
printf("Data accepted!!\n");
}
void output()
{
FILE* f1; int i;
struct mydata a[MAX];
printf("File 3.bin contens:\n");
f1=fopen("c:\\phone.bin","rb");
if(f1==NULL)exit(2);
fread(a,sizeof(a[0]),MAX,f1);
fclose(f1);
for(i=0;i<MAX;i++)
{
printf("%s's birthday is %d.%d telphonenumber is %.0ld.\n",
a[i].name,a[i].birthday.month,a[i].birthday.day1,
a[i].telnum);
}
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽