Как добавить новое значение в существующую структуру, используя функцию в программе C? - PullRequest
1 голос
/ 22 апреля 2020

Мне нужно добавить новую строку в существующий удар, где данные уже присутствуют, мне нужно добавить новое значение, используя определяемую пользователем функцию, но после выполнения функции добавления я отображаю застрявший, но не отображающий добавленный значение, показывающее только предыдущие значения, а не новое, которое добавляется. Пожалуйста, помогите мне сделать это:)

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

int n, i;

struct customer
{
    char name[30];
    char nationality[30];
    int phoneno;
    int mobileno;
    char email[30];
    int periodofstay;
    int checkintime;
    int checkouttime;
    int noofroomsreq;
    int noofoccupants;
};

void accept(struct customer[]);
void display(struct customer[]);
void search(struct customer[], char* m);
void add(struct customer[]);

Main

int main()
{
    int a;
    char m[100];
    struct customer c1[30];
    do
    {
        printf("\n1)FILL ARRAY\n");
        printf("2)SEARCH BY NAME\n");
        printf("3)PRINT ARRAY\n");
        printf("4)Add Another\n");
        printf("Search Operation:");

        scanf("%d", &a);
        switch (a)
        {
        case 1:
            accept(c1);
            break;
        case 2:
            printf("Enter Name to be searched");
            scanf("%99s", m);
            search(c1, m);
            break;
        case 3:
            display(c1);
            break;
        case 4:
            add(c1);
            break;
        case 5:
            exit(0);
            break;
        default:
            printf("Invalid Choice");
        }
    } while (a != 5);
    return 0;
}

принять функцию, значение которой показывает только

void accept(struct customer c1[30])
{
    printf("\n Enter no of customers");
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        printf("\nEnterNameofcustomers");
        scanf("%29s", c1[i].name);
        printf("\nEnterNationality");
        scanf("%29s", c1[i].nationality);
        printf("\nEnteremailid");
        scanf("%29s", c1[i].email);
        printf("\nEntermobileno");
        scanf("%d", &c1[i].mobileno);
        printf("\nPeriodofstay");
        scanf("%d", &c1[i].periodofstay);
        printf("\ncheckintime");
        scanf("%d", &c1[i].checkintime);
        printf("\ncheckouttime");
        scanf("%d", &c1[i].checkouttime);
        printf("\nroomsrequired");
        scanf("%d", &c1[i].noofroomsreq);
        printf("\nNoofoccupants");
        scanf("%d", &c1[i].noofoccupants);
    }
}

функция отображения

void display(struct customer c1[30])
{
    printf("Customer record");
    printf("\nName\tNationality\temailid\tmobileno\tPeriodofstay\tcheckintime\tcheckouttime\troomsrequired\tNoofoccupants\n");
    for (int i = 0; i < n; i++)
    {
        printf("\n%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d", c1[i].name, c1[i].nationality, c1[i].email, c1[i].mobileno, c1[i].periodofstay, // extra & in c1[i].name
               c1[i].checkintime, c1[i].checkouttime, c1[i].noofroomsreq, c1[i].noofoccupants);
    }
}

это функция, которую мне нужно сделать, чтобы добавить новое значение, как добавление

void add(struct customer c1[30])
{
    for (i = n; i < n + 1; i++)
    {
        printf("\nEnter Name of customers");
        scanf("%29s", c1[i].name);
        printf("\nEnter Nationality");
        scanf("%29s", c1[i].nationality);
        printf("\nEnter emailid");
        scanf("%29s", c1[i].email);
        printf("\nEnter mobileno");
        scanf("%d", &c1[i].mobileno);
        printf("\nPeriod of stay");
        scanf("%d", &c1[i].periodofstay);
        printf("\ncheckintime");
        scanf("%d", &c1[i].checkintime);
        printf("\ncheckouttime");
        scanf("%d", &c1[i].checkouttime);
        printf("\nroomsrequired");
        scanf("%d", &c1[i].noofroomsreq);
        printf("\nNoofoccupants");
        scanf("%d", &c1[i].noofoccupants);
    }
}

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы забываете увеличивать n при каждом добавлении, кроме как для l oop:

void add(struct customer c1[30])
{
    for (i = n; i < n + 1; i++)
    {
    ...
    }
    n++;
}
0 голосов
/ 22 апреля 2020
void add(struct customer c1[30])
{
        printf("\nEnter Name of customers");
        scanf("%29s", c1[n].name);
        printf("\nEnter Nationality");
        scanf("%29s", c1[n].nationality);
        printf("\nEnter emailid");
        scanf("%29s", c1[n].email);
        printf("\nEnter mobileno");
        scanf("%d", &c1[n].mobileno);
        printf("\nPeriod of stay");
        scanf("%d", &c1[n].periodofstay);
        printf("\ncheckintime");
        scanf("%d", &c1[n].checkintime);
        printf("\ncheckouttime");
        scanf("%d", &c1[n].checkouttime);
        printf("\nroomsrequired");
        scanf("%d", &c1[n].noofroomsreq);
        printf("\nNoofoccupants");
        scanf("%d", &c1[n].noofoccupants);
    n++;
}

это должно работать нормально:)

...