c语言可以读取文件内容 自动创建变量吗?

c语言可以读取文件内容 zi创建变量吗?
比如 txt 内容
int a;
char b;
c语言读取内容后自动创建 变量 int a;和char b;
这样做的目的是 有很多类型的值需要存储 类似 数据库的功能 ,即数据字段数据类型,
而且字段数目和类型不是固定的 ,例如 数据库创建表时 每个表可能有不同类型的字段类型和字段个数 ,需求就是类似数据库的功能吧
我知道 结构体可以存储不同类型的数据 ,即自定义类数据类型
那么如何实现 可变 数据结构呢 ?
数据库是如何实现这样功能的?
难道一个数据表 创建一个结构体 然后在编译一次 ,我想肯定不是吧!
那有什么办法实现这个功能 呢 ,我也知道c语言不能反射 ,但mysql不就是c编写的吗
还有sqite
他们是如何实现数据表中字段数目和类型的呢?
给个思路方向 谢谢!
备注:虽然就20分,但请别混分,不知道可以不用回答,另外回答不能的也不会被采纳,这个问题是提供思路方向, 问题可以沉,但请别胡乱回答.

答案肯定是可以的,一个简单的实现方法如下。
第一步定义一个结构体,成员如下:
struct Data
{
char type; //假设i-int, d-double, c-char建议用缩写便于后面判断
void *ptr;
struct Data *next;
}
第二步建立结构体链表,打开文件读取文件内容,如果文件不规律可以读取每行,自己这个扫描函数;像数据库它是规律的,数据类型后面跟着值,首先读取数据类型,然后根据数据类型用malloc申请适当内存存放数据,申请回来的内存赋值给ptr,文件值写入ptr指向的内存。按这种方式读取完全部。返回链表头head。
第三步使用值,首先使用switch case判断type类型,假设类型为i整形,那值为*((int)(ptr))。其它的类似就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-05
首先肯定可以做到,而且现实中有实际例子,即编译器。编译器读取的就是这样的文本,并且能根据不同类型的定义创建不同的变量,只不过它最后把这些变量和函数做成了可执行文件,而你则是要求把它们做成数据结构。
本质的要求是数据的序列化和反序列化。
这个问题有多种解决思路,你可以借鉴bson的思路,可以自行搜索,也有开源代码可以参考。
相似回答