file.c
来自「模拟电梯程序」· C语言 代码 · 共 150 行
C
150 行
#include<stdlib.h>
#include<stdio.h>
#include"data.h"
#include"File.h"
FILE *InputFileptr;
FILE *OutputFileptr;
FILE *RecordFileptr;
char filename[50];/*运行文件的文件名*/
void StartFile (void)
{
int choice;/*存放选择的变量*/
system("cls");/*清除屏幕*/
printf("文件管理:\n"
"1.生成新文件\n"
"2.返回上一级\n");
scanf("%d",&choice);
switch(choice)
{
case 1:printf("请输入将要写入的文件的路径和文件名:\n");
scanf("%s",&filename);
printf("请写入呼叫时间和呼叫请求:(呼叫时间(四位) 空格 呼叫请求,以ctrl+z结束)\n");
OutputFileptr=fopen(filename,"w");
writeFile();/*写文件*/
break;
case 2:system("cls");
/*printf("1.文件管理\n"
"2.运行程序\n"
"3.退出\n");*/
break;
default:printf("ERROR\n");
}
}
/*关闭记录文件*/
void CloseAnnalFile(void)
{
if(OutputFileptr!=NULL)
fclose(OutputFileptr);
}
/*写文件*/
void writeFile(void)
{
char ch;
fflush(stdin);
while((ch=getchar())!=EOF)
fputc(ch, OutputFileptr); /*将从键盘读入的数据(时间,目标)写入记录文件 */
fflush(OutputFileptr);
}
/*记录文件是否成功打开*/
int IsScriptOpened (void)
{
if(InputFileptr==NULL)/*将要运行的文件是否成功打开*/
return 0;
else
return 1;
}
/*记录文件是否成功打开*/
int IsAnnalFileOpened (void)
{
if(OutputFileptr==NULL)
return 0;
else
return 1;
}
/*刷新缓冲区*/
void FlushFileBuffer (void)
{
if(!fflush(InputFileptr))
printf("SUCCEED!\n");
else
printf("ERROR\n");
}
void Output(PAUSEPTR *startPtr)
{
if((*startPtr)!=NULL){
printf("%10d%8d\n",(*startPtr)->PauseTime,(*startPtr)->PauseFloor);
fprintf(RecordFileptr,"%d %d\n",(*startPtr)->PauseTime,(*startPtr)->PauseFloor);
fflush(RecordFileptr);
free(*startPtr);
}
*startPtr=NULL;
}
/*记录文件是否成功打开*/
int IsFileOpened (void)
{
if((InputFileptr=fopen("D:\\lift.txt","w"))==NULL)
return 0;
else
return 1;
}
void ReadFromFile()
{
FILE *fptr;
int time;
char command;
char ch[20];
int i = 0;
if (OutputFileptr == NULL) {
printf("请输入要打开的文件名:");
gets(ch);
fptr = fopen(ch, "r");
if (!fptr) {
printf("文件不存在!\n");
return;
}
}
else {
fptr = OutputFileptr;
}
fscanf(fptr, "%d %c", &cmd[0].time, &cmd[0].command);
while (!feof(fptr)) {
i++;
fscanf(fptr, "%d %c", &cmd[i].time, &cmd[i].command);
}
fclose(fptr);
}
/*从文件读入数据*/
extern void GetInput2(int curTime)
{
static int i = 0;
while (cmd[i].time == curTime) {
translatecalling(cmd[i].command);
i++;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?