Ir para conteúdo
Fórum Script Brasil
  • 0

Remover item de uma lista


Jeany Soares

Pergunta

Boa tarde,

Tenho o código a seguir e não estou conseguindo usar a função remover um item que já foi inserido anteriormente :

Gostaria de saber como inserir essa função de remover. Obrigada.😃

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TAM 1000

typedef struct {
    char serie[10];
    char nome[50];
    char idade[25];
} Aluno;

void inicializaLista(Aluno *lista, int n) {
    int i;

    for (i = 0; i < n; i++) {
        strcpy(lista[i].serie,"");
        strcpy(lista[i].nome,"");
        strcpy(lista[i].idade,"");
    }
}

void copiaAlunosLista2Arquivo(Aluno *lista, int n, char *nomeArquivo) {
    FILE *procurador = fopen(nomeArquivo,"a"); 
    int i;

    
    for (i = 0; i < n; i++) {

        if (strcmp(lista[i].serie,"") == 0) {
            break;
        }

        fprintf(procurador, "%s ", lista[i].serie);
        fprintf(procurador, "%s ", lista[i].nome);
        fprintf(procurador, "%s\n", lista[i].idade);

        fflush(procurador);
    }

    fclose(procurador);
}

void insereAluno(Aluno *lista, int n) {
    int i;
    FILE *procurador = fopen("salvaAlunos.txt","a");
    char serie[10];

    printf("Serie : ");
    scanf("%s", serie);
    fflush(stdin);

    for (i = 0; i < n; i++) {

        if (strcmp(lista[i].serie, serie) == 0) {
            printf("Serie já cadastrada. Voltando para menu\n");
            break;
        }

        if (strcmp(lista[i].serie,"") == 0) {
            printf("Aluno sera inserido na posicao %d.\n", i);

            strcpy(lista[i].serie, serie);

            fflush(stdin              );
            printf("Nome: "           );
            scanf("%s",lista[i].nome  );

            fflush(stdin              );
            printf("Sigla idade: "    );
            scanf("%s", lista[i].idade);

            fprintf(procurador, "%s " , lista[i].serie);
            fprintf(procurador, "%s " , lista[i].nome     );
            fprintf(procurador, "%s\n", lista[i].idade   );

            break;
        }
    }
    fclose(procurador);

    if (i == n) printf("Lista cheia!\n");
}

int pega_do_arquivoTXT(Aluno *lista, int n){
    FILE *fp = fopen("salvaAlunos.txt","r");
    if(fp == NULL)return 0;
    int i=0;
    while(fscanf(fp,"%s",&lista[i].serie)!= EOF &&
          fscanf(fp,"%s",&lista[i].nome     )!= EOF &&
          fscanf(fp,"%s",&lista[i].idade    )!= EOF ){
        i++;
    }
    return 1;
}

void exibeAlunos(Aluno *lista, int n) {
    int i;

    for (i = 0; i < n; i++) {
        if (strcmp(lista[i].serie,"") == 0) {
            break;
        }
        printf("Serie -: %s\n", lista[i].serie);
        printf("Nome ------: %s\n", lista[i].nome     );
        printf("Idade -----: %s\n", lista[i].idade    );
        printf("-----------------------------------\n");
    }
}


int main() {
    Aluno lista[TAM];
    int opcao,r;

    inicializaLista(lista, TAM);
    r = pega_do_arquivoTXT(lista,TAM);

    do {
        printf("1 - Insere aluno\n");
        printf("2 - Lista alunos\n");
        printf("3 - Remove aluno\n");
        printf("4 - Sair\n");
        printf("Opcao: ");
        scanf("%d", &opcao);

        switch (opcao) {
            case 1 : printf("INSERCAO DE ALUNO !\n\n");
                     insereAluno(lista,TAM);
                     r=1;
                     break;
            case 2 : printf("\nEXIBICAO DE ALUNOS !\n\n");
                     if( r )exibeAlunos(lista, TAM);
                     else printf("Primeiro Insira Os Dados !");
                     printf("\n\n");
                     break;
            case 3 :
                    
                    break;
            case 4 :
                     break;
            default : printf("Opcao invalida ! !\n");
        }

    } while (opcao != 4);


    

    return 1;
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...