gpt4 book ai didi

c - [C]使用结构体和文件添加、编辑、删除数据

转载 作者:行者123 更新时间:2023-11-30 16:32:20 25 4
gpt4 key购买 nike

我不知道我是否正确编写了代码,我的意图是'在“歌手”的某个地方写下他们的特征(名字,姓氏,id,流派等......),我想将它们显示在屏幕上并在菜单开关中选择是否根据用户的选择添加、编辑或删除其中一个(只有我有 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;

最佳答案

如果要在列表中分配可变数量的元素,请在 stdlib.h 中使用 mallocrealloc。在 Linux 中,查看 man 3 malloc 它将显示其手册页。

关于c - [C]使用结构体和文件添加、编辑、删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50192400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com