在 C 中使用动态内存分配创建数据库
Posted
技术标签:
【中文标题】在 C 中使用动态内存分配创建数据库【英文标题】:database creation using dynamic memory allocation in C 【发布时间】:2011-01-05 07:21:09 【问题描述】:我是编程新手,对链表了解不多...帮我编写程序--
从用户那里获取数据并创建您的数据库。
a>Data: Name, Age, Date of birth
b>Memory for each entry should be dynamically created.
我创建了一个结构- 结构数据库 字符名称[25]; 整数年龄[5]; int dob[10]; 结构数据库*下一个; ; 告诉我现在该怎么做...
【问题讨论】:
要在C
中动态分配内存,请查找malloc
和free
。
是的,我必须使用 malloc 和 free,但我不知道如何创建链接列表.. 只有在链接列表中,我才会使用 malloc 和 free,对吗??
在您正在使用的介绍书中查找。请不要告诉我你打算通过在 *** 上提问来学习编程。这将是一种糟糕的方式。
【参考方案1】:
struct database
char name[25];
int age[5];
// in my opinion you should only keep dob, since age would have to be constantly updated
int dob[10];
struct database *next;
TCel, *TList, **Alist;
基本思想是,每当您创建一个新 cel 时,您都使用“next”指针将其链接到链表中。例如,您可以在列表末尾添加一个新单元格:
AList InsEnd(AList aL, Info e)
TLista aux;
// allocate cel and set the information inside it
aux = AlocCel(e);
if (!aux) return aL;
while (*aL != NULL)
aL = &(*aL)->next;
// linking the node
*aL = aux;
return aL;
或
TList InsEnd2(TList aL, Info e)
TLista aux;
aux = AlocCel(e);
if(!aux) return aL;
while(aL->next != NULL)
aL = aL->next;
// linking the node
aL->next = aux;
return aL;
【讨论】:
如何检查输入数据的错误?意思是如果有人输入 12345 作为名字,如何检查它并打印错误消息,我也想问年龄.. 对于给定的示例,所有应该在 AlocCel 函数中完成的事情可能吗?无论如何,您提出的问题非常基本。您可以使用 ctype.h 库中的 ASCII 值或函数,例如 isdigit(char) 或 isalpha(char)。您可能想查看此链接:en.wikipedia.org/wiki/Ctype.h【参考方案2】:我不会给你代码,但是这些链接肯定会对你有所帮助。
http://en.wikipedia.org/wiki/Linked_list
http://richardbowles.tripod.com/cpp/linklist/linklist.htm
最好还是回去参考这本书(正如大卫所指出的,以 cmets 为单位)
【讨论】:
thnx 4 链接,,, 真的很不错,,,以上是关于在 C 中使用动态内存分配创建数据库的主要内容,如果未能解决你的问题,请参考以下文章