高分悬赏!如何将制作FLASH源文件里的每个场景导出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高分悬赏!如何将制作FLASH源文件里的每个场景导出?相关的知识,希望对你有一定的参考价值。

如何将制作FLASH源文件里的每个场景依次导出? 我现在做一个FLASH,遇到了一个问题,就是如果我把他全部导出的话,后面的声音效果和我做出来的就不搭配了,不知道什么问题。 但以前见我一个朋友也遇到过这样的情况,他是把每个场景的SWF文件导出来,之后点第一个场景的SWF文件播放就行了。。 但我现在就是不会把每个场景的SWF文件导出,有什么办法吗? 因为现在那个朋友很久都没见到他了,所以现在寻求这个办法。 高分悬赏! 如果有知道将分开来的FLASH整合到一块去的方法那就更好了,我感激不胜!

参考技术A 直接导出恐怕不行,我有个比较笨的办法,就是先把你的fla文件另存几个(和你的场景数一样多),然后分别打开这些文件,只保留对应的一个场景,把其他场景删除掉,这样就做成了几个有单一场景的源文件,分别发布生成
swf文件
就可以了。
至于合并,你可以在每个场景要转换到下一个场景的地方用
loadMovie
加载下一个swf文件就可以了,比如loadMovie("1.swf",1);后面的1代表深度,逐渐增大就可以了

C语言编程文本保存问题。。高分悬赏

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 100
typedef struct student

char num[11];
int math;
int eng;
int chin;
int ave;
int totle;
stu;
void main()

stu a[MAX];
int i=0,n=0,k;
FILE *fp;
if((fp=fopen("e:\\student.txt","a+"))==NULL)

printf("open file error!\n");
exit(0);


for(i=0;fread(&a[i],sizeof(stu),1,fp)!=0;i++)
n=i;
printf("请输入要添加的信息");
printf("\n请输入第%d个学生信息:\n",n+1);
printf("学号:\n");
scanf("%s",a[n].num);
printf("math成绩:\n");
scanf("%d",&a[n].math);
printf("english成绩:\n");
scanf("%d",&a[n].eng);
printf("chin成绩:\n");
scanf("%d",&a[n].chin);
a[n].totle=a[n].math+a[n].eng+a[n].chin;
a[n].ave=a[n].totle/3;
for(k=n-1;k>=0;k--)
if(strcmp(a[k].num,a[n].num)==0)

rintf("该学生已经存在,请重新输入");
break;


if((fp=fopen("e:\\student.txt","wb"))==NULL)

printf("open file error!\n");
exit(0);


for(i=0;i<n;i++)
fwrite(&a[i],sizeof(a[0]),1,fp);
fclose(fp);

我觉得这个程序是要完成对学生姓名和我成绩的录入吧?如果不是就请当我没有回答。
首先,第一个for函数就有问题。按我的理解,你应该在一对花括号。应该在n=i前加 ,在break后再追加一个 。这样才能实现对多个数据的输入,否则一直执行
for(i=0;fread(&a[i],sizeof(stu),1,fp)!=0;i++) n=i; 至到fread(&a[i],sizeof(stu),1,fp)==0时。再执行下面的语句。还有判断是否此人已经输入了,函数名写错了 rintf ,应该是printf。还有程序还个缺点,此程序还确实一个结束录入的语句,不然要一直录入,直到
fp=fopen("e:\\student.txt","wb")==0时才结束,而且不能正确保存信息。还有最后一个if语句也有错,
fp=fopen("e:\\student.txt","wb")也有问题。此语句应该是为后面输出学生信息,为读做准备,应该改为
fp=fopen("e:\\student.txt","rb")。另外还有个小瑕疵,平均分不一定整数,应该写为float,除的时候应该除3.0。我没有编辑器,修改的不知道到结果怎么样了,目前我还没有发现其他大问题。说句题外话,main函数太复杂,需要简化,你应该多调用函数来实现。实现同样功能的程序,最简单的才是最好的。希望我说的对你有用追问

谢谢。。可以保存了。。。但是出现的是乱码。。。还有for(i=0;fread(&a[i],sizeof(stu),1,fp)!=0;i++) n=i; 这一句好像无法计算文件中总共存有多少个,每次执行都是现显示n=0,还有可是麻烦说下那个结束录入语句要怎样,
0309101010蘗 : W N ? 这是存进去后乱码的情况

追答

#include
#include
#include
#define MAX 100
typedef struct student

char num[10];
int math;
int eng;
int chin;
float ave;
int totle;
stu;
void main()

stu a[MAX];
int i=0,n=0,k,m;
FILE *fp;
if((fp=fopen("e:\\student.txt","wb"))==NULL)

printf("open file error!\n");
exit(0);

printf("请输入要录入信息的人数(小于101):");
scanf("%d",&m);
for(i=0;i0;k--)
if(strcmp(a[k].num,a[n].num)==0)

printf("该学生已经存在,请重新输入");
i-- ;/*用来覆盖原来那个相同的*/
break;


for(i=0;i<n+1;i++)

printf("%-6s%5d%5.1f",a[i].num,a[i].totle,a[i].ave);
printf("\n");

fclose(fp);

我没有运行过,你自己试试吧

参考技术A 先说下错误。
读取,文件是用a+方式打开,这读取数据,因为文件指针在最末的关系,读取出来的数据是空的,所以n永远为0。
其次,在写数据前,没有fclose文件就再fopen一次,这是正确的文件操作方式?
最后,老实说,看你的代码头很痛,不是说代码很难,而是这个格式实在太难看,很多时候,一看到这种混乱的代码,直接看都不看就关掉的。在诸多IDE的今天,写一段格式整齐的代码很难么,不要跟我说你是用windows记事本写代码的。

最最后,下面是整理并修改正确的代码:

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

#ifndef MAX_NUM
#define MAX_NUM 100
#endif

typedef struct student

char num[11];
int math;
int eng;
int chin;
int ave;
int totle;
stu;

void main()

stu a[MAX_NUM];
int i = 0, n = 0, k = 0;
FILE *fp = fopen("e:\\student.txt","rb+");
for(n = 0; fp && fread(&a[n], 1, sizeof(stu), fp) != 0; ++n) ;
printf("请输入要添加的信息");
printf("\n请输入第%d个学生信息:\n",n + 1);
printf("学号:\n");
scanf("%s",a[n].num);
printf("math成绩:\n");
scanf("%d",&a[n].math);
printf("english成绩:\n");
scanf("%d",&a[n].eng);
printf("chin成绩:\n");
scanf("%d",&a[n].chin);
a[n].totle=a[n].math+a[n].eng+a[n].chin;
a[n].ave=a[n].totle/3;
for(k = n-1; k >= 0; k--)

if(strcmp(a[k].num,a[n].num) == 0)

printf("该学生已经存在,请重新输入");
break;


if(fp == NULL && (fp = fopen("e:\\student.txt","wb")) == NULL)

printf("open file error!\n");
exit(0);

fseek(fp, 0, SEEK_SET);
for(i = 0; i <= n; i++)
fwrite(&a[i], 1, sizeof(a[0]), fp);
fclose(fp);
追问

真的非常感谢。。。。由于还算是初学者还在学习中。。。。会慢慢改进的。。。多谢指导。。。不过那个存进去为什么成绩存进去的是乱码 存进文本的内容如下
0309101201 蘗 X W X  麻烦再指导下哦

追答

因为使用"wb"方式打开文件再写入的原因,如果要不乱码文本,需要修改读写的逻辑,比现在会麻烦很多。要将每个struct的字段按一定的规则读写才行。

本回答被提问者采纳
参考技术B char name[15]; /*姓名*/
float jbgz; /*基本工资*/
float koukuan; /*扣款*/
float yfgz; /*应发工资*/
float shuijin; /*税金*/
float sfgz; /*实发工资*/
struct z1 *prior;/*前驱指针*/
struct z1 *next;/*后继指针*/
SALARY; /*结构体类型名*/
struct z1 *First; /*双链表头指针*/
struct z1 *Last; /*双链表尾指针*/
/******函数原型*********/
void init(); /*初始化*/
void create(); /*创建链表*/
void calc(); /*计算应发工资*/
void delete(); /*删除*/
void search(); /*查找*/
void save(); /*保存文件*/
void load(); /*读取文件*/
void computer(); /*计算所需各种票面张数*/
void insert(); /*插入*/
void append(); /*追加*/
void copy(); /*复制文件*/
void sort(); /*排序*/
void index(); /*索引*/
void total(); /*分类合计*/
void list(); /*显示所有数据*/
void print(SALARY *p); /*输出单条记录*/
void display(); /*随意逐条显示*/
float fax(float x); /*计算税金*/
int menu_select(); /*主菜单*/
/*******主函数开始**********/
main()

int i;
clrscr();
for(;;)

switch(menu_select()) /*调用菜单函数返回一个整数值*/

case 0:init();break; /*初始化*/
case 1:create();break; /*输入数据创建双链表*/
case 2:list();break; /*显示所有数据*/
case 3:display();break; /*单条显示*/
case 4:calc();break; /*计算实发工资*/
case 5:search();break; /*查找职工信息数据*/
case 6:delete();break; /*删除记录*/
case 7:insert();break; /*插入记录*/
case 8:append();break; /*追加记录*/
case 9:save();break; /*保存文件*/
case 10:load(); break; /*读取文件*/
case 11:copy();break; /*复制文件*/
case 12:sort();break; /*按实发工资升序排序*/
case 13:computer();break; /*计算所需票面数*/
case 14:index();break; /*按职工号索引*/
case 15:total();break; /*按部门求合计*/
case 16:exit(0); /*退出*/



/*菜单函数,函数返回值为整型,代表所选的菜单项*/
menu_select()

char *f[]= /*定义菜单字符串数组*/
"**************MENU*************", /*菜单的标题行*/
" 0. init list", /*初始化双链表*/
" 1. Enter list", /*输入数据,创建双链表*/
" 2. List all \n", /*显示所有记录*/
" 3. Display record by step", /*显示单条记录*/
" 4. Calc the salary", /*计算实发工资*/
" 5. Search record on name", /*查找记录*/
" 6. Delete a record", /*删除记录*/
" 7. Insert record to list", /*插入记录*/
" 8. Append record to file", /*追加记录*/
" 9. Save data to the file", /*保存文件*/
" 10. Load data from the file",/*读取文件*/
" 11. Copy the file to new file", /*复制文件*/
" 12. Sort on sfgz", /*排序*/
" 13. Computer ticket number", /*计算所需票面数*/
" 14. Index on number", /*索引*/
" 15. Total on number", /*分类合计*/
" 16. Quit" ; /*退出*/
char s[80];
int i;
int key=0; /*记录所压键值*/
int c=0;
gotoxy(1,25); /*移动光标*/
printf("press any key enter menu......\n");/*压任意键进入主菜单*/
getch();
clrscr(); /*清屏*/
textcolor(YELLOW); /*设置文本颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为兰色*/
gotoxy(10,2);
putch(0xda); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xc4); /*输出上边框水平线*/
putch(0xbf); /*输出右上角边框 ┓*/
for(i=3;i<22;i++)/*输出左右两边的垂直线*/

gotoxy(10,i);putch(0xb3);
gotoxy(54,i);putch(0xb3);

gotoxy(10,22);putch(0xc0); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xc4); /*输出下边框水平线*/
putch(0xd9); /*输出右下角边框┛*/
window(11,3,53,21); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<18;i++)

gotoxy(10,i+1);
cprintf("%s",f[i]); /*输出菜单项数组*/

i=1;
gotoxy(10,2); /*设置默认选项在第一项*/
textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/
cprintf("%s",f[1]); /*输出菜单项,表示选中*/
gotoxy(10,2); /*移动光标到菜单的第一项*/
while(key!=13) /*所压键不是回车键时*/

while(bioskey(1)==0); /*查询是否压下了一个键*/
key=bioskey(0); /*返回下一个在键盘压下的键*/
key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/
gotoxy(10,i+1);
textbackground(BLUE);/*设置背景颜色为蓝色*/
cprintf("%s",f[i]); /*输出菜单项*/
if(key==72) i=i==1?17:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
if(key==80)i=i==17?1:i+1; /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
gotoxy(10,i+1); /*光标移动i的下一项*/
textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/
cprintf("%s",f[i]); /*输出菜单项*/
c=i-1; /*给代表菜单选项的整数赋值*/

textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
return c; /*返回代表菜单选项的整数值*/

/*初始化函数*/
void init()

First=NULL;
Last=NULL;

/*输入数据,创建双链表*/
void create()

int x; /*记录行坐标*/
int i; /*记录输入记录数*/
int flag=0; /*做结束标记*/
float temp; /*定义临时变量*/
SALARY *info,*p; /*定义临时变量*/
if(First!=NULL)
init();/*如果头指针为空,调用初始化函数*/
p=First; /*从头指针开始*/
for(;;)

if(flag==1)
break; /*如果flag=1,结束输入*/
i=0;
x=0; /*确定移动的行坐标*/
clrscr(); /*清屏*/
gotoxy(1,3);
printf("*************gongziguanli*************");/*输出标题*/
gotoxy(1,4);
printf(" --Enter @ end--");/*提示输入@结束*/
gotoxy(1,5);
printf("|------------------------------------|");/*输出表格的起始线*/
gotoxy(1,6);
printf("| no | name | jbgz |");/*输出字段标题,注意空格数*/
for(;;)

gotoxy(1,7+x);
printf("|----------|----------------|--------|");/*输出表格的水平线*/
info=(SALARY *)malloc(sizeof(SALARY));/*申请一个记录空间*/
if(!info)

printf("\nout of memory");/*如没有得到空间,输出内存溢出信息*/
exit(0);/*退出程序*/

info->next=NULL;/*新结点的后继为空*/
info->prior=NULL;/*新结点的前驱为空*/
gotoxy(1,8+x);printf("|"); /*输出数据间的分割线*/
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(2,8+x);/*光标到输入编号位置*/
inputs(info->no,10);/*输入编号,并验证长度不超过10*/
if(info->no[0]=='@')

flag=1;
break;
/*编号首字符为@结束输入*/
gotoxy(13,8+x); /*光标到输入姓名位置*/
inputs(info->name,14); /*输入姓名,并验证长度不超过14*/
gotoxy(30,8+x); /*光标到输入基本工资位置*/
scanf("%f",&temp); /*输入基本工资到临时变量*/
info->jbgz=temp; /*基本工资赋值*/
info->koukuan=0; /*初始扣款为0,待计算工资时输入*/
info->sfgz=0; /*初始实发工资为0,待计算工资时计算*/
info->shuijin=0; /*初始税金为0,待计算工资时计算*/
info->yfgz=0; /*初始应发工资为0,待计算工资时计算*/
if(p==NULL)/*如果p为空,说明输入的是第一个结点*/

First=Last=info;/*头指针和尾指针*/
First->prior=NULL; /*头指针的前驱是空*/
Last->next=NULL; /*尾指针的后继是空*/

else /*插入的结点不是第一结点,则插入在头结点之前*/

info->next=p;/*新结点的后继指向原来的头结点*/
info->prior=p->prior;/*新结点的前驱指向原来的头结点的前驱*/
p->prior=info;/*原来结点的前驱指向新结点*/

p=info; /*新结点变为p结点,暂时的头结点*/
First=info; /*新结点变为头结点*/
x+=2; /*因为水平线,将光标下移两行*/
gotoxy(1,8+x);
i++; /*输入记录数加1*/
if(i%9==0)
break; /*输入9个记录,换一页输入*/

gotoxy(1,8+x);

printf("|----------|----------------|--------|");/*输出结尾水平线*/

/*字符串输入和验证函数*/
inputs(char *s, int count)

char p[255];
do
scanf("%s",p);/*输入字符串*/
if(strlen(p)>count)printf("\n too long! \n");/*进行长度校验,超过count值重输入*/
while(strlen(p)>count);
strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/

/*显示链表*/
void list()

int i=0,n; /*记录输出行数*/
SALARY *p; /*定义移动指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
while(i%10==0&&p!=NULL) /*外循环控制换页*/

i=0; /*记录一页的输出行数*/
clrscr(); /*清屏*/
printf("\n\n\n"); /*换行三次*/
printf("*************************************SALARY***********************************\n"); /*输出大标题*/
printf("|nO | name | jbgz | koukuan | yfgz | shuijin | sfgz |\n"); /*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*输出水平线*/
while(p!=NULL) /*当p不为空时*/

printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",
p->no,p->name,p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);
p=p->next; /*指针后移*/
i++; /*输出行数加1 */
if(i%10==0)
break; /*如果满10行,跳出内循环*/

printf("****************************************end***********************************\n"); /*输出本页的结束行*/
printf("Press any key congtinue...\n");
getch(); /*输出一页暂停一下,压任意键继续*/
/*返回到外循环,准备下一页的输出*/

/*单条显示记录*/
void display()

int ch; /*菜单选项字符*/
SALARY *p; /*定义临时指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
if(p==NULL) /*指针为空,即链表为空,返回主函数*/

printf("record is empty!\n");
return;

else

print(p); /*调用输出函数显示头结点信息*/
for(;;) /*循环开始*/

printf("\n\n0. Quit 1. Prior 2. Next 3. First 4.Last \n\n");
/*菜单项Quit退出 Prior前驱 Next后继 First第一条 Last最后一条*/
printf("\nplease select 0~4:"); /*提示输入菜单选项0~4*/
scanf("%d",&ch); /*输入菜单选项0~4*/
if(ch==0) break; /*如果选项为0,退出*/
switch(ch) /*开关语句根据选项字符判断*/

case 1:p=p->prior;if(p==NULL)p=First;break; /*指向前驱,没有前驱指向第一个*/
case 2:p=p->next;if(p==NULL) p=Last;break; /*指向后继,没有后继指向最后一个*/
case 3:p=First;break; /*指向第一个结点*/
case 4:p=Last;break; /*指向最后一个结点*/

print(p); /*调用输出函数显示指针所指结点信息*/



/*输出指针所指结点信息*/
void print(SALARY *p)

if(p) /*如果指针不为空,则显示信息*/

clrscr(); /*清屏*/
printf("\n\n\n"); /*换行*/
printf("************************************SALARY************************************\n"); /*输出标题信息*/
printf("|no | name | jbgz | koukuan| yfgz | shuijin | sfgz |\n"); /*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*输出分割线*/
printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n", p->no,p->name,
p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*输出结点信息*/
printf("***************************************end***************************** *******\n"); /*输出结束标记*/


/*计算实发工资*/
void calc()

int x; /*行坐标*/
int i=0; /*记录数*/
float temp; /*临时变量扣款*/
SALARY *p; /*移动指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
while(p!=NULL) /*当p不为空时,也就是有记录时,外循环控制换页*/

x=0;
clrscr();
gotoxy(1,3);
printf("***************************gongziguanli************************************"); /*输出标题*/
gotoxy(1,5);
printf("|--------------------------------------------------------------------------|");
gotoxy(1,6);/*下面输出字段标题*/
printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |");
while(p!=NULL) /*当p不为空时,也就是有记录时,内循环控制处理9条*/

gotoxy(1,7+x);
printf("|----------|----------------|--------|----------|--------|--------|--------|");
gotoxy(1,8+x);printf("|");
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(49,8+x);printf("|");
gotoxy(58,8+x);printf("|");
gotoxy(67,8+x);printf("|");
gotoxy(76,8+x);printf("|");
gotoxy(2,8+x);
printf("%-10s",p->no); /*输出编号*/
gotoxy(13,8+x);
printf("%-15s",p->name); /*输出姓名*/
gotoxy(30,8+x);
printf("%.2f",p->jbgz); /*输出基本工资*/
gotoxy(39,8+x);
scanf("%f",&temp); /*输入扣款*/
p->koukuan=temp; /*扣款字段赋值*/
p->yfgz=p->jbgz-p->koukuan; /*计算应发工资=基本工资-扣款*/
gotoxy(50,8+x);
printf("%.2f",p->yfgz); /*输出应发工资*/
gotoxy(59,8+x);
p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否则按税率计算税金*/
printf("%.2f",p->shuijin); /*输出税金*/
gotoxy(68,8+x);
p->sfgz=p->yfgz-p->shuijin; /*计算实发工资*/
printf("%-8.2f",p->sfgz); /*输出实发工资*/
x+=2; /*行坐标下移两行*/
i++; /*记录数加1*/
if(i%9==0)break; /*记录数超过9条,跳出内循环*/
p=p->next; /*指针后移,处理下一条*/

gotoxy(1,7+x);
printf("|----------|----------------|--------|----------|--------|--------|--------|\n"); /*输出结束行*/
printf("Press any key congtinue...\n");
getch();


/*根据应发工资,计算税率*/
float fax(float x)

float f1;
if(x<1000)
return 0; /*小于1000,返回0*/
switch((int)(x/1000))

case 1:f1=0.05;break; /*1000~1999,返回0.05*/
case 2:f1=0.1;break; /*2000~2999,返回0.1*/
case 3:f1=0.15;break; /*3000~3999,返回0.15*/
case 4:f1=0.2;break; /*4000~4999,返回0.2*/
default:f1=0.3;break; /*5000以上,返回0.3*/

return f1;

/*计算票面张数*/
void computer()

SALARY *p;
int i=0,a[7]=,t100,t50,t20,t10,t5,t2,t1;/*设置数组和临时变量保存票面张数*/
float t; /*过渡变量,保存当前剩余工资*/
p=First; /*移动指针从头指针开始*/
while(p!=NULL) /*当p不为空时*/

t100=(int)p->sfgz/100; /*计算100元张数*/
a[0]=a[0]+t100; /*累加保存*/
t=p->sfgz-t100*100; /*剩余工资*/
t50=(int)(t/50); /*计算50元张数*/
a[1]=a[1]+t50; /*累加保存*/
t=t-t50*50; /*剩余工资*/
t20=(int)(t/20); /*计算20元张数*/
a[2]=a[2]+t20; /*累加保存*/
t=t-t20*20; /*剩余工资*/
t10=(int)(t/10); /*计算10元张数*/
a[3]=a[3]+t10; /*累加保存*/
t=t-t10*10; /*剩余工资*/
t5=(int)(t/5); /*计算5元张数*/
a[4]=a[4]+t5; /*累加保存*/
t=t-t5*5; /*剩余工资*/
t2=(int)(t/2); /*计算2元张数*/
a[5]=a[5]+t2; /*累加保存*/
t=t-t2*2; /*剩余工资*/
t1=(int)(t); /*计算1元张数*/
a[6]=a[6]+t1; /*累加保存*/
p=p->next; /*指针后移,处理下一条记录*/

clrscr(); /*清屏*/
printf("\n\n\n***********ticket number***************\n"); /*输出标题*/
printf("--100-----50------20-----10-----5------2------1------\n");
/*输出张数标题*/
for(i=0;i<7;i++)
printf("%5d ",a[i]);/*输出所需的张数*/
printf("\n");/*换行*/

/*按编号查找记录*/
SALARY *find(char *no)

SALARY *p; /*定义移动指针*/
p=First; /*从头指针开始*/
while(p) /*当p不为空时*/

if(!strcmp(no,p->no))
return p; /*比较相等,查找成功,返回指针*/
p=p->next; /*不相等指针后移*/

printf("not found\n"); /*没有找到*/
return NULL; /*返回为空指针*/
参考技术C 在第二次打开文件前先关闭。 参考技术D 尾段的
for(i=0;i<n;i++)
改为
for(i=0;i<=n;i++)
试试追问

还是不行

追答

前面统计个数略改了一下 这样就能看到你存的结果了
文件以二进制保存,即数字65用记事本看是A 所以有乱码

后面是完整的程序 多条记录录入 学号转入0结束
#include
#include
#include

#ifndef MAX_NUM
#define MAX_NUM 100
#endif

typedef struct student

char num[11];
int math;
int eng;
int chin;
float ave;
int totle;
stu;

void main()

stu a[MAX_NUM];
int i = 0, n = 0, k = 0;
FILE *fp = fopen("e:\\student.txt","rb+");
clrscr();
printf("学号\t数:\t英:\t语:\t均:\t总:\t\n");
for(n = 0; fp && fread(&a[n], 1, sizeof(stu), fp) != 0; ++n)
printf("%s\t%d\t%d\t%d\t%f\t%d\t\n",
a[n].num,a[n].math,a[n].eng,a[n].chin,a[n].ave,a[n].totle);
printf("*************************************************\n");
if(fp == NULL && (fp = fopen("e:\\student.txt","wb")) == NULL)

printf("open file error!\n");
exit(0);

fseek(fp, 0, SEEK_SET);
printf("请输入要添加的信息");
do
printf("\n请输入第%d个学生信息:\n",n + 1);
printf("学号:\n");
scanf("%s",a[n].num);
if(!strcmp(a[n].num,"0"))break;
printf("math成绩:\n");
scanf("%d",&a[n].math);
printf("english成绩:\n");
scanf("%d",&a[n].eng);
printf("chin成绩:\n");
scanf("%d",&a[n].chin);
a[n].totle=a[n].math+a[n].eng+a[n].chin;
a[n].ave=a[n].totle/3;
for(k = n-1; k >= 0; k--)

if(strcmp(a[k].num,a[n].num) == 0)

printf("该学生已经存在,请重新输入");
break;


/* for(i = 0; i <= n; i++)
fwrite(&a[i], sizeof(a[i]),1 , fp);*/
fwrite(&a[n], sizeof(a[n]),1 , fp);
n++;
while(1);
fclose(fp);


如果一次不能输入多条记录 就把fseek删掉
附英文下运行结果

以上是关于高分悬赏!如何将制作FLASH源文件里的每个场景导出?的主要内容,如果未能解决你的问题,请参考以下文章

高分悬赏!关于软件

高分悬赏

基于ERDAS的遥感影像地图制作(高分悬赏)

高分悬赏:如何将网站的论坛频道用Discuz或phpwind?这二个论坛程序又哪个好?分别怎么用

高分悬赏好听的歌

C语言编程文本保存问题。。高分悬赏