[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 17.979 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/********************************************************************************************* 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> int abreArquivo(char arquivo[]){ FILE *arqEntrada; FILE *arqSaida; int line = 0; int linha = 1; int i; char textoArquivo[100]; char *output; output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char)); strcat(output, arquivo); strcat(output, ".editado"); 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(output, "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, '{FONTE}', 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("O arquivo output %c: %s\n",233, output); free(output); //desaloca espaço alocado para string contendo novo do novo arquivo fclose(arqEntrada); //fecha a stream 'arqEntrada' fclose(arqSaida); //fecha a stream 'arqSaida' } int main(void){ //rotina principal do programa char arquivo[100]; printf("Digite o caminho completo do arquivo: "); __fpurge(stdin); //limpa buffer de entrada scanf("%[^\n]", arquivo); abreArquivo(arquivo); }
Fwn - Formatador de arquivos .txt
Barra de progresso em forma de “roda”
Editar o arquivo /etc/rc.d/rc.local
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
A escola é altamente ineficiente e ineficaz! (10)
Software livre - será que eu estou tão errado assim? (5)