首页 > 解决方案 > C中的结构数组大小

问题描述

我对编程很陌生。内存分配也让我感到困惑。我们的教授要求我们制作一个结构数组,用户将在其中输入数组大小。这是为了知道用户将在电话簿中输入多少条目。

到目前为止是这样的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct TelDirectory {
    char name[50];
    char address[100];
    char tel[20];
}; 

int main() {
    int num, add, del, prev = 0;
    char ask;
    *//asking for the number of entries*
    printf("Number of entries: ");
    scanf(" %i", &num);

    struct TelDirectory *entry[num];

    Input(entry, prev, num);
    Display(entry, num);

//输入和显示

void Input(struct TelDirectory *entry[], int prev, int num) {
    int i;

    for (i = prev; i < num; i++) {
        entry[i] = (struct TelDirectory *)malloc(sizeof(struct TelDirectory) * num);

        printf("\nEnter name (last, first, middle): ");
        scanf(" %[^\n]", entry[i]->name);

        printf("Enter address: ");
        scanf(" %[^\n]", entry[i]->address);

        printf("Enter telephone number: ");
        scanf(" %[^\n]", entry[i]->tel);    
    }

void Display(struct TelDirectory *entry[], int num) {
    int i, j;
    printf("%i\n", num);
    struct TelDirectory *temp;
    temp = (struct TelDirectory *) malloc(sizeof(struct TelDirectory) * num);
    for (i = 0; i < num; i++) {
        for (j = i+1; j < num; j++) {
            if (strcasecmp(entry[i]->name, entry[j]->name) > 0) {
                temp = entry[i];
                entry[i] = entry[j];
                entry[j] = temp;
            }
        }
    }

    printf("\n\t\t\t\t\tInformation\n");
    printf("------------------------------------------------------------------------------------------------\n");
    printf("Name\t\t\t\t\tAddress\t\t\t\t\tTelephone Number\n");
    printf("------------------------------------------------------------------------------------------------\n");
    for (i = 0; i < num; i++) {
        printf("%-30s\t\t%-30s\t\t%-30s\n", entry[i]->name, entry[i]->address, entry[i]->tel);
    }
    printf("------------------------------------------------------------------------------------------------\n");
}

而且,我们还将询问用户是否会通过插入更多条目或删除条目来更新目录。是否可以在运行时更改结构数组大小?

标签: cstructure

解决方案


推荐阅读