Salve, sto svolgendo questa traccia:
Progettare ed implementare un programma in grado di
1. acquisire da tastiera il vettore playlist; ogni elemento di playlist e’ un record (struttura), di nome
song, composto da tre campi:
titolo 20 caratteri; autore 20 caratteri; genere 10 caratteri.
Utilizzando un menu’ di input consentire:
2. La ricerca di una canzone per titolo (se trovata visualizzarne anche autore e genere).
3. La visualizzazione del numero di canzoni appartenente ad ogni genere.
4. Salvare il vettore playlist nel file compilation;
5. Uscita
Ma ho problemi nell'implementare la ricerca, infatti una volta chiamata la funzione ricerca(), chiamata la funzione strcmp() si blocca il programma... Ecco il codice:
Inoltre il dev c++ mi restituisce questi warnings:codice:#include <stdio.h> #include <string.h> struct song{ char titolo[20]; char autore[20]; char genere[10]; }; typedef struct song Brano; //prototipi void lettura(Brano *vettore, int elem); void stampa(Brano *vettore, int elem); void ricerca(Brano *vettore, int elem, char canzone); int main () { int elem; char canzone[20]; int i; printf("Inserisci il numero di canzoni da includere nella Playlist: "); scanf("%d",&elem); Brano vettore[elem]; fflush(stdin); lettura(vettore,elem); stampa(vettore,elem); //STAMPA IL MENU printf("\n1. Ricerca brano per titolo;\n"); printf("2. Visualizzazione numero canzoni per genere;\n"); printf("3. Salva la playlist nel file compilation;\n"); printf("4. Esci.\n"); int scelta; scanf("%d",&scelta); switch(scelta){ case 1: printf("Inserisci il nome del brano da cercare:\n"); fflush(stdin); gets(canzone); ricerca(vettore,elem,canzone); break; case 2: break; case 3: break; case 4: break; default: printf("\nScelta non consentita!\n"); } system("pause"); return 0; } void lettura(Brano *vettore, int elem){ int i; for(i=0;i<elem;i++){ printf("\nBrano numero %d\n",i+1); printf("Titolo: "); gets(vettore[i].titolo); printf("Autore: "); gets(vettore[i].autore); printf("Genere: "); gets(vettore[i].genere); } } void stampa(Brano *vettore, int elem){ int i; printf("\nHai inserito questi brani\n"); for(i=0;i<elem;i++){ printf("Titolo: %s\n",vettore[i].titolo); printf("Autore: %s\n",vettore[i].autore); printf("Genere: %s\n",vettore[i].genere); } } void ricerca(Brano *vettore, int elem, char canzone){ int i; int trovato=1; for(i=0;i<elem && trovato!=0;i++){ printf("%d ",i); trovato=strcmp(vettore[i].titolo,canzone); } if(trovato==0){ printf("Brano trovato!\n"); printf("Titolo: %s\n",vettore[i].titolo); printf("Autore: %s\n",vettore[i].autore); printf("Genere: %s\n",vettore[i].genere); } else printf("Brano non trovato!\n"); }
Come posso risolvere i problemi e i warnings?codice:C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c In function `main': 46 C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c [Warning] passing arg 3 of `ricerca' makes integer from pointer without a cast C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c In function `ricerca': 98 C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c [Warning] passing arg 2 of `strcmp' makes pointer from integer without a cast
Grazie

Rispondi quotando
