标题:实训啦,问题多多~大家多多关照!
只看楼主
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 

#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编辑过]


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-27 09:16
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 

/*帮楼主改了一下,请楼主再试再自添功能*/

#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);
}
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-27 09:29
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-27 09:29
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
fflush(stdin);
请问这个是啥米?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-27 09:34
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
以下是引用穆扬在2006-6-27 9:29:54的发言:
说的太明白
恐怕让你觉得太低估你的智力

1.scanf都忘记怎么用了么
scanf(" %d",a[i]->birthday.day1);
这种句子也写得出来?
2.把最初的函数丢掉不好
是头痛医脚
3.觉得你轻视基本概念
你的代码表明你经常基本概念不清楚

。。。是有点。觉得写得不够。。。

呼。。。。。。


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-27 09:36
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
回复:(走刀口→超)fflush(stdin);请问这个是啥米?...
以下是引用走刀口→超在2006-6-27 9:34:58的发言:
fflush(stdin);
请问这个是啥米?

当你不了解一条语句之时,最简单的办法就是将它/* */一下,看看运行情况有何变化。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-27 09:47
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 

/* */后并不能发现他的真正功能。

只觉得和getchar();差不多。

查函数得知,将缓冲区直接写入文件(文件以写方式打开)。必须打开着是不?

慢慢来。。。慢慢来。又有点急了。


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-27 09:56
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
回复:(走刀口→超)/* */后并不能发现他的真正功能。...
以下是引用走刀口→超在2006-6-27 9:56:53的发言:

/* */后并不能发现他的真正功能。

只觉得和getchar();差不多。

查函数得知,将缓冲区直接写入文件(文件以写方式打开)。必须打开着是不?

慢慢来。。。慢慢来。又有点急了。


/*fflush(stdin);*/
不是
fflush(stdin);/* */


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-27 10:07
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
不明白~

越来越晕了~T。T


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-27 10:23
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
年轻的齐桓公——小白

[此贴子已经被作者于2006-6-27 10:53:53编辑过]



落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-27 10:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-74859-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121632 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved