Mano, aqui no primeiro exercício deu 37 error e 22 avisos! olha o código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct ListaArtista {
char musica[50], artista[50];
float duracao;
ListaArtista *prox;
}; ListaArtista *inicio, *meio, *fim, *aux;
void inserirMusica(){
int c;
ListaArtista *novo = (struct ListaArtista *)malloc(sizeof(struct ListaArtista));
printf("\nSelecione a musica");
fgets(novo->musica, 49, stdin);
printf("De qual artista? ");
fgets(novo->artista, 49, stdin);
printf("Duracao da musica? ");
scanf("%f", &novo->duracao);
while ((c = getchar()) != '\n' && c != EOF) {} // Limpar buffer do teclado
novo->prox = NULL;
if (inicio == NULL) //A Fila esta vazia e iremos inserir o primeiro elemento
{
inicio = fim = novo;
}
else{
fim->prox = novo;
fim = novo;
}
}
void LimparLista() {
char ch;
if (inicio == NULL) {
printf("\nLista\n");
}
else {
printf("s/n ");
ch = gecthar();
if (ch == 's' || ch == 'S') {
while (inicio != NULL) {
aux = inicio;
inicio = inicio->prox;
free(aux); // Limpa o espaco da memoria
}
printf("\nLista vazia\n");
}
}
}
void VizualizarLista() {
aux = inicio;
if (inicio == NULL)
{
printf("\n Lista vazia!");
}
else {
while (aux != NULL) {
printf("musica:%s", aux->musica);
printf("artista: %s", aux->artista);
printf("duracao: %f\n\n", aux->duracao);
aux = aux->prox;
}
}
printf("\n");
}
void ProcurarMusica()
{
aux = inicio;
if (inicio == NULL)
{
printf("\nLista vazia");
}
else
{
char musica[50];
printf("Digite a faixa: ");
scanf_s("%s", &aux);
while (aux != NULL)
{
if (musica == aux->musica) {
printf("\n Musica %s encontrada\n", aux->musica);
printf("musica %s", aux->musica);
printf("cantor:%s\n", aux->artista);
return;
}
else {
aux = aux->prox;
}
}
if (aux == NULL) {
printf("\nMusica %s não encontrada!", musica);
}
}
printf("\n");
}
int main() {
setlocale(LC_ALL, "");
int opc, c;
do {
printf("1.Inserir música\n");
printf("2.Procuar música\n");
printf("3.Vizualizar lista\n");
printf("4.Limpar lista\n");
printf("5.Sair\n");
printf("Escolha o opção!");
scanf_s("%d", &opc);
while((c == gecthar()) != 'n' && c != EOF ) {}
switch (opc) {
case 1:
inserirMusica();
system("pause");
break;
case 2:
ProcurarMusica();
system("pause");
break;
case 3:
VizualizarLista();
system("pause");
break;
case 4:
LimparLista();
system("pause");
break;
case 5:
exit;
break;
default:
printf("Opcão incorreta!");
break;
}
system("cls");
} while (opc != 5);
return 0;
}