📄 open.c
字号:
int Open(DBF * dbf_name, DBF * cur_dbf, char * commond, char * open_style)
{
FILE * fp;
char open_name[TABLE_NAME_LENGTH];/*记录打开的表名*/
char style;/*记录打开方式*/
int i = 0;
int opened_no = -1;/*记录打开的表在表数组中的序号*/
commond = strtok(commond," ");
commond = strtok(NULL," ");
if (commond == NULL)
{
puts(" 命令错误,请输入关系名");
return ERROR;
}
if (strlen(commond) > TABLE_NAME_LENGTH)
{
puts(" 输入表名错误");
return ERROR;
}
strcpy(open_name,commond);
for (i=0; i<MAX_OPENED_COUNT; i++)
{
if (strcmpi(open_name,dbf_name[i].dhName) == 0)
{
puts(" 该表已经打开,请用用use命令使用该表");
return ERROR;
}
}
commond = strtok(NULL, " ");
if (commond == NULL)
{
puts(" 请输入打开方式!!!");
return ERROR;
}
if (strlen(commond) > 1)
{
puts(" 打开方式错误!!!");
return ERROR;
}
else
{
switch (* commond) {
case 'r':
case 'w':
case 'a':
style = * commond;
break;
default :
puts(" 打开方式错误!!!");
return ERROR;
}
}
commond = strtok(NULL, " ");
if (commond != NULL)
{
printf(" 命令错误,多余字符串 %s\n", commond);
return ERROR;
}
fp = fopen(open_name,"rb");
if (fp == NULL)
{
puts(" 打开错误,该表不存在!!!");
return ERROR;
}
for (i=0; i<MAX_OPENED_COUNT; i++)
{
if (dbf_name[i].dhID == -1)
{
opened_no = i;
cur_dbf = &(dbf_name[i]);
break;
}
}
fread(cur_dbf,sizeof(DBF),1,fp);
open_style[opened_no] = style;
cur_dbf->dhID = opened_no;
printf(" %s opened in %c style!!\n",open_name,style);
printf(" 记录格式:");
for (i=0; i<cur_dbf->dhFieldCount; i++)
{
switch (cur_dbf->dbf_struct[i].dhFieldType) {
case Int:
printf("%s(int) ",cur_dbf->dbf_struct[i].dhFieldName);
break;
case Float:
printf("%s(float) ",cur_dbf->dbf_struct[i].dhFieldName);
break;
default :
printf("%s(string %d) ",cur_dbf->dbf_struct[i].dhFieldName,cur_dbf->dbf_struct[i].dhFieldLen);
break;
}
}
puts("");
fclose(fp);
return opened_no;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -