[C] добавлять, редактировать, удалять данные с помощью структуры и файла - PullRequest
0 голосов
/ 05 мая 2018

Я не знаю, правильно ли я пишу код, я намереваюсь «где-то написать« певцов »с их характеристиками (имя, фамилия, идентификатор, жанр и т. Д.), Я бы хотел чтобы отобразить их на экране и в переключателе меню выберите, добавлять ли, редактировать или удалять один из них на основе выбора пользователя (только у меня есть массив из 21, и я не знаю, как добавить еще позже ..) В случае 1 Я пишу эту структуру в файл, в 2 домах я визуализирую их на экране. Если вы можете помочь мне, я был бы признателен, это дни, я не могу найти решение. Я принимаю любые конструктивные советы

            #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    //costanti
    #define maxnomeau 16
    #define maxcognomeau 18
    #define maxnazionalitaau 14
    #define maxmusicaau 12
    #define maxvet 21


    //definisco la struttura autore
    typedef struct {

    int id;
    char nome[maxnomeau];
    char cognome[maxcognomeau];
    char nazionalita[maxnazionalitau];
    char sesso[2];
    char musica[maxmusicaau];

    }autori;



    int main(void)
    {

    autori vettaut[maxvet]={

            {1,"Bob", "Sinclair","Francese","M","House"},
            {2,"Michael", "Jackson","Americana","M","Pop"},
            {3,"Loredana", "Berte'","Italiana","F","Rock"},
            {4,"Albano", "Carrisi","Italiana","M","Leggera"},
            {5,"Tim", "Bergling","Svedese","M","House"},
            {6,"Tiziano", "Ferro","Italiana","M","Pop"},
            {7,"Fabrizio", "Tarducci","Italiana","M","Rap"},
            {8,"David", "Guetta","Francese","M","Elettronica"},
            {9,"Sfera", "Ebbasta","Italiana","M","Trap"},
            {10,"Gue'", "Pequeno","Italiana","M","Rap"},
            {11,"Vittorio", "Dimango","Italiana","M","House"},
            {12,"Taylor","Swift","Americana","F","Pop"},
            {13,"Antonello", "Venditti","Italiana","M","Leggera"},
            {14,"Fabrizio", "Deandre'","Italiana","M","Leggera"},
            {15,"Capo", "Plaza","Italiana","M","Trap"},
            {16,"Dark", "Pologang","Italiana","M","Trap"},
            {17,"Sonny", "Skrillex","Americano","M","Elettronica"},
            {18,"Beatrice", "Antolini","Italiana","F","Elettronica"},
            {19,"Fabio", "Marracash","Italiana","M","Rap"},
            {20,"Roger", "Waters","Inglese","M","Rock"},
            {21,"Jimi", "Hendrix","Inglese","M","Rock"}
            };

      case 1: //la scelta 1 e' la scrittura dei cantanti su file
    {system("cls");


    FILE *fp;

    fp=fopen("autori.dat","w");
    if(fp==NULL)
    {
         printf("errore\n");
    }
    else
    for(i=0;i<maxvet;i++)
    {
    fprintf(fp,"\n\n %d \t %s \t %s \t %s \t %s \t %s\n",vettaut[i].id,vettaut[i].nome,vettaut[i].cognome,vettaut[i].nazionalita,vettaut[i].sesso,vettaut           [i].musica);


    }
    fclose(fp);
    printf("Gli artisti sono stati salvati sul file <autori.dat>\n");

            system("pause");
            system("cls");
            }
            break;

        case 2: //la scelta 2 e' la visualizzazione su schermo di tutti i cantanti
            {system("cls");
                FILE *fp;
    if((fp=fopen("autori.dat","r"))==NULL) {
         printf("Errore Visualizzazione\n");
    }
    else
    printf("%-4s || %-12s || %-12s || %-12s || %-2s || %-12s || \n\n","<ID>","<NOME>","<COGNOME","NAZIONALITA'","<SESSO>","<MUSICA>");
    for(i=0;i<maxvet;i++)
    {
    fscanf(fp,"%d %s %s %s %s %s",&vettaut[i].id,vettaut[i].nome,vettaut[i].cognome,vettaut[i].nazionalita,vettaut[i].sesso,vettaut[i].musica);
    printf("%-4d || %-12s || %-12s || %-12s || %-7s || %-12s || \n\n",vettaut[i].id,vettaut[i].nome,vettaut[i].cognome,vettaut[i].nazionalita,vettaut           [i].sesso,vettaut[i].musica);

    }
    fclose(fp);



            system("pause");
            system("cls");}
            break;

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите выделить переменное количество элементов в списке, используйте malloc или realloc в stdlib.h. В Linux посмотрите на man 3 malloc, который откроет справочные страницы для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...