Fiz esse programinha para criar e ler em arquivos de texto,
Ele cria normal, mas na hora de ler, ele mostra certinho na tela, mas da um erro depois.
alguém sabe o que pode ser?
// Teste.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _Contato
{
int codigo;
char nome[30];
char email[100];
} Contato;
int main()
{
// Cria ponteiro para arquivo
FILE *agenda;
// Cria nova variavel do tipo Contato
Contato addcont;
// Variavel temporaria para gravar uma linha no arquivo
char temp[4096];
int ctrl;
// Inicia o Menu
ctrl = 0;
while (ctrl != 3)
{
system("cls");
printf("\n AGENDA TELEFONICA");
printf("\n\n 1 - Inserir na lista");
printf("\n 2 - Ler da lista");
printf("\n 3 - Sair");
printf("\n\n ==> ");
scanf("%d",&ctrl);
system("cls");
// Incluir
if (ctrl==1)
{
// Inicia os valores
addcont.codigo = 1;
fflush(stdin);
printf(" Entre com o nome: ");
gets(addcont.nome);
fflush(stdin);
printf(" Entre com o e-mail: ");
gets(addcont.email);
// Abre novo arquivo para operacoes de escrita e gravacao (a+)
// Caso o arquivo não exista ele cria, caso ele exista
// As gravacoes serao concatenadas no final do arquivo
agenda = fopen("agenda.txt", "a+");
// Importante: Testar se o ponteiro foi criado
if (!agenda)
{
printf("Erro: não foi possivel abrir/criar o arquivo\n");
exit(0);
}
// Monta a linha para gravar no arquivo;
sprintf(temp, "%d;%s;%s\r\n", addcont.codigo, addcont.nome, addcont.email);
// Faz a gravacao dos dados no arquivo no formato CSV (Separado por ";")
fputs(temp, agenda);
// Fecha ponteiro do arquivo e evita que dados sejam corrompidos
fclose(agenda);
}
// Ler
if (ctrl==2)
{
// Abre novo arquivo para leitura (r = read)
agenda = fopen("agenda.txt", "r");
// Importante: Testar se o ponteiro foi criado
if (!agenda)
{
printf("Erro: não foi possivel abrir o arquivo\n");
exit(0);
}
// Enquanto o final do arquivo não chega... fica no loop
while (!feof(agenda))
{
// O fgets le uma linha de tamanho 4096 e armazena no temp
// do ponteiro de arquivo agenda
fgets(temp, 4096, agenda);
// A funcao atoi converte uma string passada para inteiro
// A funcao strtok divide uma string em tokens (partes)
// Obs.: Apenas passar a string para o strtok na primeira chamada
// as outras devem ter NULL ate q a string inteira seja dividida
addcont.codigo = atoi(strtok(temp, ";\r\n"));
strcpy(addcont.nome, strtok(NULL, ";\r\n"));
strcpy(addcont.email, strtok(NULL, ";\r\n"));
printf("| %3d | %30s | %30s |\n", addcont.codigo, addcont.nome, addcont.email);
}
// Fecha ponteiro do arquivo e evita que dados sejam corrompidos
fclose(agenda);
system("pause");
}
}
//return 0;
}
Pergunta
Ervilha
Fiz esse programinha para criar e ler em arquivos de texto,
Ele cria normal, mas na hora de ler, ele mostra certinho na tela, mas da um erro depois.
alguém sabe o que pode ser?
Editado por ErvilhaLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.