fun_delete_expression.cpp
来自「本程序是完成一个函数计算器的功能,通过输入表达式,然输入表达的未知数,则可以计算」· C++ 代码 · 共 98 行
CPP
98 行
#include "head.h"
extern FILE *fp ;
extern expression expre;
/*按公式序号查找公式 */
int SerchExpression(int no , FILE *fp)
{
int c = 0 ;
expression s ;
if((fp=fopen(FileName ,"r"))==NULL) // FileName文件不存在,结束本函数
{
printf("Can't open file %s.\n",FileName );
return 0;
}
s.p_Expression = (char*)malloc(50);
while(ReadExpression(fp,&s)!=0) //读取FileName文件中序号为no的文件内容
{
if(s.g_iNumber - no ==0)
{
DisplayExpression(&s); //输出所查找的内容
expre.g_iNumber = s.g_iNumber ;
expre.p_Expression = s.p_Expression ;
c++;
break;
}
}
fclose(fp);
if(c==0) //查询不到所要查询的内容
{
printf("The expression %d is not in the file %s.\n",no,FileName );
return 0 ;
}
return 1;
}
/*公式的删除*/
void RemoveExpression()
{
int l_number = 0 , expression_exist=0;
char c ;
expression sigle_expression;
listExpression *head ,*node ,*temp , *p;
printf("You should select expression number to delete.\n");
printf("Please input expression number that you want to delete(1-50)\n");
printf(">");
scanf("%d" , &l_number); // 输入要删除的序号
node = MakeList(FileName); //把FileName文件夹内容输入到链表node 中
head = node ;
while(head != NULL) //while(head->next !=NULL)
{
if(head->g_iNumber == l_number) //判断链表中是否有要删除的序号,有就删除,没有就退出
{
expression_exist = 1 ;
printf("whether delete the %s expression ? (Y/N)\n",head->p_Expression); // 是否要删除公式
printf(">") ;
getchar();
c = getchar() ;
if(c == 'Y' || c == 'y') // 删除所指定号公式,并且把链表中的内容写入到FileName文件夹中
{
printf("The expression deleted .");
p->next = head->next ;
fp=fopen(FileName ,"w");
do
{
sigle_expression.g_iNumber = node->g_iNumber ;
sigle_expression.p_Expression = node->p_Expression ;
WriteExpression(fp,&sigle_expression);//把结构体sigle_expression写入fp所指的文件中
temp = node->next;
node = temp ;
}while(node !=NULL) ; //while(node->next != NULL);
fclose(fp);
printf("Do you want to continue to delete expression.(Y/N)\n"); // 是否继续进行删除
printf(">");
getchar();
c = getchar();
if(c == 'Y' || c == 'y') // 若是,则递归调用来进行删除
{
RemoveExpression();
}
else
{
return ; // 若不想继续删除,则退出
}
}
else
{
return ; // 所指定公式序号在文件中,但不进行删除,则退出
}
}
p = head ;
head = head->next ;
}
if(expression_exist ==0) // 文件夹中不存在所指定的公式序号
{
printf("The number is%d expression is not exist file. \n" , l_number);
return ;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?