EnzoFerber
(usa FreeBSD)
Enviado em 05/03/2006 - 17:36h
Aí esta o programa que você quer (espero que seja mesmo... :) )
/*********************************************************************************************
Programa: apaga.c
Autor: Enzo Ferber 'Slackware_10'
Propósito: Apaga linha definida por usuário em um arquivo
**********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define NULO '\ 0' //tire o espaço entre a '\' e o '0'.. coloquei o espaço pois tá dando erro aqui no VOL
int abreArquivo(char arquivo[]){
FILE *arqEntrada;
FILE *arqSaida;
int line = 0;
int linha = 1;
int i;
char textoArquivo[100];
if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto
printf("Impossivel abrir arquivo...\n"); //informa o erro
exit(1); //finaliza execução
}
if((arqSaida = fopen("encoded.txt", "w")) == 0){ //testa se o arquivo pode ser aberto
printf("Impossivel abrir arquivo...\n"); //informa o erro
exit(1); //finaliza execução
}
printf("Digite a linha a ser apagada no arquivo: "); //pede a linha
scanf("%d", &line); //le a linha e armazena na variável 'line'
rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo
for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo
memset(textoArquivo, NULO, 100); //inicializa e/ou limpa string 'textoArquivo'
fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres
if(linha == line){ //se a linha for a escolhida
fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha
linha = linha + 1; //incrementa o contador de linhas
continue; //volta ao inicio do loop sem executar o resto
}
linha = linha + 1; //incrementa o contador de linas
fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt
}
printf("Linhas: %d\n", (linha-1)); //imprime quantas linhas tem o arquivo lido
fclose(arqEntrada); //fecha a stream 'arqEntrada'
fclose(arqSaida); //fecha a stream 'arqSaida'
}
int main(void){ //rotina principal do programa
abreArquivo("arquivo.txt"); //ponha o nome do arquivo a ser editado aqui
}