Jump to content
Sofia Raimundo

Erro ao ler ficheiro a partir de uma estrutura

Recommended Posts

Sofia Raimundo

Estou a desenvolver uma aplicação cujo objetivo é obter um gestor de músicas. O programa está organizado em menus: um menu principal e dois secundários, o menu das músicas e o menu dos artistas. No menu das músicas existem quatro opções: listar as músicas, adicionar músicas, editar músicas e remover músicas. Para estas opções funcionarem preciso que o ficheiro das músicas seja escrito e lido pelo programa. Como se pode escrever e ler um ficheiro num programa em linguagem C?

void menuMusicas()
{
    int op;
    do
    {
        printf("Escolha uma das opcoes:\n");
        printf("1 - Listar musicas\n");
        printf("1 - Adicionar musica\n");
        printf("2 - Editar musica\n");
        printf("3 - Remover musica\n");
        printf("0 - Voltar\n");
        scanf("%d", &op);
        switch(op)
        {
            case 1: listarMusicas();
                    break;
            case 2: adicionarMusica();
                    break;
            case 3: editarMusica();
                    break;
            case 4: removerMusica();
                    break;
            case 0: return;
            default: printf("\nOpcao invalida, tente novamente.");
        }
    }while(op!=0);
}

void listarMusicas(MUSICA * m)
{
    printf("Funcao para listar musicas!\n");
    int i=0;
    for(i=0; i<num_musicas; i++) //cada posição do vetor vai ser preenchida com a informação que é pedida abaixo, ficando assim as músicas listadas
    {
        printf("ar: %s\n", m[i].ar);
        printf("al: %s\n", m[i].al);
        printf("year: %d\n", m[i].year);
        printf("ti: %s\n", m[i].ti);
        printf("length: %f\n", m[i].len);
        printf("\n");
    }
}

void adicionarMusica()
{
    printf("Funcao para adicionar musica!\n");
    ler_nova_musica(& v_musicas[num_musicas]);
    num_musicas++;
}

void ler_nova_musica(MUSICA * m)
{
    //função para ler nova musica
}

void editarMusica(MUSICA * m)
{
    printf("Funcao para editar musicas!\n");
    int op, i=0;
    printf("Escreva a posicao (ID) da musica quq quer editar:\n"); //posição no vetor musicas em que está a música a e ser editada
    scanf("%d", i);
    do
    {
        printf("Escolha uma das opcoes\n");
        printf("1 - Editar artista\n");
        printf("2 - Editar album\n");
        printf("3 - Editar ano\n");
        printf("4 - Editar titulo\n");
        printf("5 - Editar duracao\n");
        scanf("%d", &op);
        switch (op)
        {
            case 1: printf("ar: %s\n", m[i].ar);  //é editado o artista da musica
                    break;
            case 2: printf("al: %s\n", m[i].al);  //é editado o nome do álbum da musica
                    break;
            case 3: printf("year: %d\n", m[i].year);  //é editado o ano de lançamento da música
                    break;
            case 4: printf("ti: %s\n", m[i].ti);  //é editado o título da música
                    break;
            case 5: printf("length: %f\n", m[i].len);  //é editada a duração da música
                    break;
            default: printf("Opcao invalida. Tente novamente.");
        }
    }while(op!=0);
}

void removerMusica()
{
    printf("Funcao para editar musicas!\n");
    int i=0;
    printf("Escreva a posicao (ID) da musica que quer remover:\n");  //posição no vetor musicas em que está a música a ser removida
    scanf("%d", &i);
    for(i; i<num_musicas; i++)
    {
        v_musicas[i] = v_musicas[i-1];  //a música a ser removida vai ser substituída na sua posição pela música que se encontra na posição seguinte no vetor e assim sucessivamente
    }
}

Obrigada!

Edited by M6
Formatação de código.

Share this post


Link to post
Share on other sites
HappyHippyHippo

primeiro terás de escolher se estás a gravar dados binários ou texto no ficheiro que terás de manipular, já o fizeste ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.