RAfa Posted June 25, 2023 at 12:45 AM Share Posted June 25, 2023 at 12:45 AM 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; } Quote Link to comment Share on other sites More sharing options...
Fernando Mercês Posted June 26, 2023 at 07:41 PM Share Posted June 26, 2023 at 07:41 PM 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! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.