![]() |
#2
TonyDeng2015-12-24 21:27
![]() bool Load_Header(FILE* file, Header* header) { char buffer[1024]; bool success = true; rewind(file); bool inHeader = false; while (!ferror(file) && !feof(file) && fgets(buffer, _countof(buffer), file)) { if (!inHeader) { _strupr_s(buffer, _countof(buffer)); if (strcmp(buffer, "[HEADER]\n") == 0) { inHeader = true; continue; } } if (inHeader) { sscanf_s(buffer, "Fields Number: %u", &header->Field_Number); header->Fields = (Field*)calloc(header->Field_Number, sizeof(Field)); if (header->Fields) { for (size_t index = 0; index < header->Field_Number; ++index) { if (fgets(buffer, _countof(buffer), file)) { Get_String(buffer, header->Fields[index].Name, sizeof(header->Fields[index].Name), '\"'); const char* p = strchr(buffer, '='); if (p) { sscanf_s(p + 1, "%1c", &header->Fields[index].Type, 1); } else { header->Fields[index].Type = 'U'; } p = strchr(buffer, '['); if (!p || (sscanf_s(p, "[%d,%d]", &header->Fields[index].Length, &header->Fields[index].Decimal) != 2)) { success = false; break; } } else { header->Field_Number = index; success = false; break; } } } break; } } return success; } [此贴子已经被作者于2015-12-24 21:42编辑过] |

#include <cstdio>
#include <cstdlib>
#include "common.h"
#include "database.h"
/*
Field Student_Fields[] = {
{ "学号", 'I', 4, 0 },
{ "姓名", 'C', 30, 0 },
{ "性别", 'C', 1, 0 },
{ "年龄", 'I', 2, 0 },
{ "身份证", 'C', 18, 0 },
{ "联系电话", 'C', 20, 0 },
{ "地址", 'C', 50, 0 }
};
Header Student_Header = { _countof(Student_Fields), Student_Fields };
*/
Header Student_Header;
void List_Fields(const Header* header);
int main(int argc, char* argv[])
{
if (argc < 2)
{
printf_s("命令格式: %s 数据文件名\n", Get_FileName(argv[0]));
Pause();
return EXIT_FAILURE;
}
FILE* file;
if (fopen_s(&file, argv[1], "rt") == 0)
{
Load_Header(file, &Student_Header);
fclose(file);
List_Fields(&Student_Header);
}
//Create_Table(argv[1], &Student_Header);
Pause();
return EXIT_SUCCESS;
}
void List_Fields(const Header* header)
{
size_t index;
for (index = 0; index < header->Field_Number; ++index)
{
printf_s("%s %c %d,%d\n",
header->Fields[index].Name,
header->Fields[index].Type,
header->Fields[index].Length,
header->Fields[index].Decimal);
}
}
只有本站会员才能查看附件,请 登录