renanpelicari
(usa Outra)
Enviado em 11/07/2008 - 08:55h
Bom, aqui está um exemplo de manipulação de arquivos externos em C. Não compilei, mas a idéia é essa.
Boa Sorte.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define MAX_SIZE 100
#define NUM_MAX_LINHAS 100
#define OK 0
#define I_ERR 1
#define O_ERR 2
typedef char palavra[MAX_SIZE];
typedef palavra lista_textos[NUM_MAX_LINHAS];
// rotina que le o arquivo dados.txt
// retorna se deu erro ou se foi ok
// parm textos volta linha a linha do arquivo
// parm size volta numero de linhas
int le_in( lista_textos textos, int * size )
{
FILE *texto; //o file é uma variável para um arquivo externo (no caso o txt)
int retorno, contador_in;
palavra word;
texto = fopen("dados.txt", "rt"); //fopen abre o arquivo e o rt(read text) lê o arquivo
if ( texto == NULL) //se o texto estiver em branco, da erro na abertura
{
fprintf(stderr, "Deu erro na abertura da entrada\n");
retorno = I_ERR;
}
else
{
for ( contador_in = 0; !feof(texto); contador_in++ )
{
fscanf( texto, "%s", word ); //lê o arquivo texto
printf("\n PALAVRA %d => %s ", contador_in, word );
strcpy( textos[contador_in], word ); //a strcpy (string copy) copia do texto para a variável
}
fclose(texto); //fecha o arquivo
*size = contador_in;
retorno = OK;
}
return( retorno );
}
// rotina que escreve o arquivo dados.bkp
// retorna se deu erro ou se foi ok
// parm textos passa linha a linha do arquivo
// parm size passa o numero de linhas
int write_out( lista_textos textos, int size )
{
int contador_out, retorno;
FILE *out;
out = fopen("dados.bkp", "wt"); //wt (write text) cria um novo arquivo
if ( out == NULL)
{
fprintf(stderr, "Erro na abertura da saida\n");
retorno = O_ERR;
}
else
{
for ( contador_out = 0; contador_out < size; contador_out++ )
{
fprintf( out, "%s\n", textos[contador_out] ); /*a cada letra da variável $textos, o fprintf escreve para o arquivo(out) que é o dados.bkp*/
}
fclose(out);
retorno = OK;
}
return( retorno );
}
int main(void)
{
int retorno, size;
lista_textos textos;
retorno = le_in( textos, &size );
if (retorno == OK)
{
//leitura terminou, começa a escrita
retorno = write_out( textos, size );
}
getch();
return( retorno );
}