在 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 中动态分配内存,请查找mallocfree 是的,我必须使用 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 中使用动态内存分配创建数据库的主要内容,如果未能解决你的问题,请参考以下文章

类和动态内存分配

通过动态分配创建数组后,在C中通过realloc改变内存大小时出现问题

如何使用 malloc 为 C 中的结构创建动态内存分配?

C/C++动态内存创建与内存管理

c语言分配内存方式都有哪些

c语言 动态数组