📄 create.c
字号:
int Create(DBF * dbf_name, char * commond)
{
FILE * fp;/*文件指针,用于建立dbf文件*/
int i = 0;/*循环变量*/
int pos = 0;
unsigned j = 0;/*循环变量*/
commond = strtok(commond, " ");
commond = strtok(NULL," ");
if (commond == NULL)
{
puts(" 命令格式错误");
return ERROR;
}
/*读表名*/
if (commond != NULL)
{
fp = fopen(commond,"rb");
if (fp != NULL)
{
puts(" 该表已存在");
return ERROR;
}
strcpy(dbf_name->dhName,commond);
}
commond = strtok(NULL," ");
/*读字段名和字段类型*/
while (commond != NULL)
{
if (strlen(commond) > FIELD_NAME_LENGTH)
{
puts(" 属性名过长!");
return FAILED;
}
if (dbf_name->dhFieldCount >= MAX_FILED_COUNT)
{
puts(" 过多属性!");
return FAILED;
}
for (i=0; i<dbf_name->dhFieldCount; i++)
{
if (strcmpi(dbf_name->dbf_struct[i].dhFieldName,commond) == 0) {
puts(" 存在同名属性!");
return FAILED;
}
}
strcpy(dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldName,commond);
/*读类型名*/
commond = strtok(NULL, " ");
if (commond != NULL)
{
if (strcmpi(commond,"INT") == 0)
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType = Int;
else if(strcmpi(commond,"STRING") == 0)
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType = String;
else if(strcmpi(commond,"FLOAT") == 0)
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType = Float;
else
{
printf(" %s 的类型名错误",dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldName);
return ERROR;
}
}
else
{
puts(" 命令格式错误,请输入类型名");
return ERROR;
}
/*读数据长度*/
if (dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType == Int)
{
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldLen = sizeof(int);
dbf_name->dhRecLen += sizeof(int);
}
else if (dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType == Float)
{
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldLen = sizeof(float);
dbf_name->dhRecLen += sizeof(float);
}
else
{
commond = strtok(NULL, " ");
if (commond != NULL)
{
for (j=0; j<strlen(commond); j++)
{
if (!isdigit(commond[j]))
{
printf(" 输入错误,%s 改为int型\n",commond);
return ERROR;
}
}
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldLen = atoi(commond);
dbf_name->dhRecLen += atoi(commond);
}
else
{
puts(" 命令格式错误,请输入字符串型数据长度");
return 0;
}
}
commond = strtok(NULL, " ");
dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldPos = pos;
/*计算字段在记录中的偏移位置*/
switch (dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldType) {
case Int :
pos += sizeof(int);
break;
case String :
pos += (int)dbf_name->dbf_struct[dbf_name->dhFieldCount].dhFieldLen;
break;
case Float :
pos += sizeof(float);
break;
}
dbf_name->dhFieldCount++;
}
fp = fopen(dbf_name->dhName,"wb");
dbf_name->dhHandle = fileno(fp);
fwrite(dbf_name,sizeof(DBF),1,fp);
InitializeDbf(dbf_name);
fclose(fp);
return SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -