需要在C盘根目录下有create.txt和create2.txt方可运行。
如:create1.txt
create table Student
(
id float(4) NOT NULL;
name char(100) NULL;
grade float(4) NULL;
) create2.txt
create table Student2
(
id2 float(4) NOT NULL;
name2 char(100) NULL;
grade2 float(4) NULL;
)
完整源码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum DataType {floatType, stringType};
struct Row {
void** data;
Row* next;
};
struct Column {
DataType type;
int length;
bool allowNull;
char name[256];
Column* next;
};
struct Table{
char name[256];
Row* rowHead;
Column* columnHead;
int columnCount;
Table* next;
};
Table* tableHead;
int createTable(char*,Table*);
int getLength(char*);
int getColumnTypeLength(char* , DataType* , int*);
int main(){
Table* t = (Table *)malloc(sizeof(Table));
memset(t, 0, sizeof(Table));
char* path;
path = "C://create.txt";
createTable(path,t);
t = (Table *)malloc(sizeof(T

本文探讨了在C实现简易内存数据库时遇到的问题,特别是在`create`功能的实现过程中。当在函数`createTable`内部声明并初始化Table结构体t后,由于函数执行完毕,t所占内存被释放,导致全局变量tableHead保存的t地址失效。为解决这个问题,文章建议在main函数中声明t,并传递t的指针给`createTable`,以确保对同一对象进行操作,避免数据丢失。
最低0.47元/天 解锁文章
2675

被折叠的 条评论
为什么被折叠?



