Ir para conteúdo

problemas em um codigo


RAfa

Posts Recomendados

boa noite estou com um problema em um codigo toda vez que executo parece Erro ao abrir o arquivo ESPETACULOS.txt sendo que ja verifiquei o nome e estão na mesmo pasta

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_SESSIONS 100
#define MAX_SEATS 112
#define MAX_USERS 10
 
// Estrutura para armazenar informações de uma sessão
typedef struct {
    char id[4];
    char title[20];
    char director[20];
    int duration;
    int ageRecommendation;
    char date[9];
    char time[6];
} Session;
 
// Estrutura para armazenar informações de um assento
typedef struct {
    char session[4];
    char row;
    char seats[17];
} Seat;
 
// Estrutura para armazenar informações de um usuário
typedef struct {
    char login[21];
    char password[21];
    char type;
} User;
 
// Função para carregar as sessões do arquivo ESPETACULOS.TXT
int loadSessions(Session sessions[], int *sessionCount) {
    FILE *file = fopen("ESPETACULOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ESPETACULOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de sessão
    while (!feof(file)) {
        if (fscanf(file, "%3s %20s %20s %d %d %8s %5s",
                   sessions[*sessionCount].id,
                   sessions[*sessionCount].title,
                   sessions[*sessionCount].director,
                   &sessions[*sessionCount].duration,
                   &sessions[*sessionCount].ageRecommendation,
                   sessions[*sessionCount].date,
                   sessions[*sessionCount].time) != 7) {
            break;
        }
 
        (*sessionCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar as sessões no arquivo ESPETACULOS.TXT
void saveSessions(Session sessions[], int sessionCount) {
    FILE *file = fopen("ESPETACULOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ESPETACULOS.txt\n");
        return;
    }
 
    // Loop para escrever cada sessão no arquivo
    for (int i = 0; i < sessionCount; i++) {
        fprintf(file, "%s %s %s %d %d %s %s\n",
                sessions[i].id,
                sessions[i].title,
                sessions[i].director,
                sessions[i].duration,
                sessions[i].ageRecommendation,
                sessions[i].date,
                sessions[i].time);
    }
 
    fclose(file);
}
 
// Função para carregar os assentos do arquivo ASSENTOS.TXT
int loadSeats(Seat seats[], int *seatCount) {
    FILE *file = fopen("ASSENTOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ASSENTOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de assento
    while (!feof(file)) {
        if (fscanf(file, "%3s %c %16s",
                   seats[*seatCount].session,
                   &seats[*seatCount].row,
                   seats[*seatCount].seats) != 3) {
            break;
        }
 
        (*seatCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar os assentos no arquivo ASSENTOS.TXT
void saveSeats(Seat seats[], int seatCount) {
    FILE *file = fopen("ASSENTOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo ASSENTOS.txt\n");
        return;
    }
 
    // Loop para escrever cada assento no arquivo
    for (int i = 0; i < seatCount; i++) {
        fprintf(file, "%s %c %s\n",
                seats[i].session,
                seats[i].row,
                seats[i].seats);
    }
 
    fclose(file);
}
 
// Função para carregar os usuários do arquivo USUARIOS.TXT
int loadUsers(User users[], int *userCount) {
    FILE *file = fopen("USUARIOS.txt", "r");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo USUARIOS.txt\n");
        return 0;
    }
 
    // Loop para ler cada linha do arquivo e armazenar as informações nas estruturas de usuário
    while (!feof(file)) {
        if (fscanf(file, "%20s %20s %c",
                   users[*userCount].login,
                   users[*userCount].password,
                   &users[*userCount].type) != 3) {
            break;
        }
 
        (*userCount)++;
    }
 
    fclose(file);
    return 1;
}
 
// Função para salvar os usuários no arquivo USUARIOS.TXT
void saveUsers(User users[], int userCount) {
    FILE *file = fopen("USUARIOS.txt", "w");
    if (file == NULL) {
        printf("Erro ao abrir o arquivo USUARIOS.txt\n");
        return;
    }
 
    // Loop para escrever cada usuário no arquivo
    for (int i = 0; i < userCount; i++) {
        fprintf(file, "%s %s %c\n",
                users[i].login,
                users[i].password,
                users[i].type);
    }
 
    fclose(file);
}
 
// Função para realizar o login do usuário
User *login(User users[], int userCount) {
    char login[21];
    char password[21];
 
    printf("Login: ");
    scanf("%20s", login);
    printf("Senha: ");
    scanf("%20s", password);
 
    // Verificar se as credenciais estão corretas
    for (int i = 0; i < userCount; i++) {
        if (strcmp(users[i].login, login) == 0 && strcmp(users[i].password, password) == 0) {
            User *user = malloc(sizeof(User));
            strcpy(user->login, users[i].login);
            strcpy(user->password, users[i].password);
            user->type = users[i].type;
            return user;
        }
    }
 
    printf("Credenciais inválidas.\n");
    return NULL;
}
 
// Função para cadastrar uma nova sessão
void addSession(Session sessions[], int *sessionCount) {
    printf("ID da sessão: ");
    scanf("%3s", sessions[*sessionCount].id);
    printf("Título: ");
    scanf(" %[^\n]", sessions[*sessionCount].title);
    printf("Diretor: ");
    scanf(" %[^\n]", sessions[*sessionCount].director);
    printf("Duração (em minutos): ");
    scanf("%d", &sessions[*sessionCount].duration);
    printf("Recomendação de faixa etária: ");
    scanf("%d", &sessions[*sessionCount].ageRecommendation);
    printf("Data da sessão (dd/mm/aa): ");
    scanf("%8s", sessions[*sessionCount].date);
    printf("Horário da sessão (hh:mm): ");
    scanf("%5s", sessions[*sessionCount].time);
 
    (*sessionCount)++;
}
 
// Função para excluir uma sessão existente
void deleteSession(Session sessions[], int *sessionCount) {
    char sessionId[4];
 
    printf("ID da sessão a ser excluída: ");
    scanf("%3s", sessionId);
 
    // Encontrar a sessão com o ID correspondente e removê-la
    int found = 0;
    for (int i = 0; i < *sessionCount; i++) {
        if (strcmp(sessions[i].id, sessionId) == 0) {
            for (int j = i; j < *sessionCount - 1; j++) {
                sessions[j] = sessions[j + 1];
            }
            (*sessionCount)--;
            found = 1;
            break;
        }
    }
 
    if (found) {
        printf("Sessão excluída com sucesso.\n");
    } else {
        printf("Sessão não encontrada.\n");
    }
}
 
// Função principal
int main() {
    Session sessions[MAX_SESSIONS];
    int sessionCount = 0;
    Seat seats[MAX_SEATS];
    int seatCount = 0;
    User users[MAX_USERS];
    int userCount = 0;
    User *currentUser = NULL;
 
    // Carregar sessões, assentos e usuários dos arquivos
    if (!loadSessions(sessions, &sessionCount) ||
        !loadSeats(seats, &seatCount) ||
        !loadUsers(users, &userCount)) {
        return 1;
    }
 
    // Loop principal do programa
    while (1) {
        // Verificar se há um usuário logado
        if (currentUser == NULL) {
            currentUser = login(users, userCount);
            if (currentUser == NULL) {
                break;
            }
        }
 
        // Menu de opções
        printf("\n--- Menu ---\n");
        if (currentUser->type == 'G') {
            printf("1. Cadastrar sessão\n");
            printf("2. Excluir sessão\n");
            // Mais opções do gerente...
        }
        printf("0. Sair\n");
        printf("Escolha uma opção: ");
 
        int option;
        scanf("%d", &option);
 
        switch (option) {
            case 1:
                if (currentUser->type == 'G') {
                    addSession(sessions, &sessionCount);
                    saveSessions(sessions, sessionCount);
                }
                break;
            case 2:
                if (currentUser->type == 'G') {
                    deleteSession(sessions, &sessionCount);
                    saveSessions(sessions, sessionCount);
                }
                break;
            case 0:
                // Logout do usuário
                free(currentUser);
                currentUser = NULL;
                break;
            default:
                printf("Opção inválida.\n");
                break;
        }
    }
 
    // Salvar sessões, assentos e usuários nos arquivos
    saveSessions(sessions, sessionCount);
    saveSeats(seats, seatCount);
    saveUsers(users, userCount);
 
    return 0;
}
Link para o comentário
Compartilhar em outros sites

Opa, consegue editar esse código-fonte pra ficar melhor de ler? Pode usar o botão "Código (<>)" do editor aqui do site quando for fazê-lo. Exempleo de como fica:

int main(void) {
	printf("oiee\n");
}

Se você remover essas linhas em branco, vai ficar muuuito melhor pra galera ajudar. 😉

Abraço!

Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...