close.c

来自「一个用C编写的简单的关系数据库系统」· C语言 代码 · 共 57 行

C
57
字号
int Close(DBF * dbf_name, char * commond)
{
	FILE * fp;
	DBF * dbfPtr = NULL;
	char close_name[TABLE_NAME_LENGTH];
	int i = 0;
	int close_no = -1;

	commond = strtok(commond," ");
	commond = strtok(NULL," ");

	if (commond == NULL)
	{
		puts("	你没有输入文件名,请输入文件名");
		return 0;
	}
	if (strlen(commond) > TABLE_NAME_LENGTH)
	{
		puts("	输入表名错误");
		return ERROR;
	}
	strcpy(close_name,commond);
	for (i=0; i<MAX_OPENED_COUNT; i++)
	{
		if (strcmpi(dbf_name[i].dhName,close_name) == 0) 
		{
			close_no = i;
			break;
		}
	}
	if (close_no == -1)
	{
		puts("	该表未打开过!!!");
		return ERROR;
	}

	dbfPtr = &(dbf_name[close_no]);
	if (dbf_name[close_no].dhModify == 0)/*判断是否被修改过,若无修改则直接关闭*/
	{
		InitializeDbf(dbfPtr);
		printf("	关系 %s 已关闭\n",close_name);
		return close_no;
	}
	/*将表信息回写到文件*/
	fp = fopen(close_name,"rb+");
	if(fp == NULL)
	{
		printf("	未知错误,无法打开文件 %s\n", close_name);
		return 0;
	}
	dbfPtr->dhID = FREE;
	fwrite(dbfPtr,sizeof(DBF),1,fp);
	InitializeDbf(dbfPtr);
	fclose(fp);
	printf("	关系 %s 已关闭\n",close_name);
	return close_no;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?