Copia uma linha selecionada para um arquivo secundário
Publicado por Ewerton Daniel de Lima (última atualização em 06/05/2010)
[ Hits: 5.960 ]
Programa simples que conta as linhas de um arquivo e dá a opção para cópia de uma das linhas para um arquivo secundário.
#include <stdio.h> #include <string.h> char LIMPAR[] = "clear"; /* Função que faz a contagem de linhas de um arquivo. Recebe como parâmetro(s): 1. Ponteiro para uma estrutura FILE; Retorna: Número de linhas contido no arquivo. */ int contaLinhas(FILE *arquivo) { int numLinhas = 0; char c; while ((c=fgetc(arquivo)) != EOF) { if (c=='\n') numLinhas++; } return numLinhas; } /* Rotina que devolve o conteúdo da linha número "numLinha". Recebe como parâmetros: 1. Arquivo que se deseja obter a linha; 2. Número da linha que se deseja obter; 3. Número de linhas do arquivo; Retorna: Ponteiro para a primeira posição da string que armazena o conteúdo da linha. */ char* conteudoLinha(FILE *arquivo, int numLinha, int tamanho) { if (numLinha>tamanho) return NULL; int tamanhoLinha = 0, linhaAtual = 0, achou = 0; char *linha; char c; rewind(arquivo); numLinha--; while (c=fgetc(arquivo)) { if (c=='\n') linhaAtual++; if (linhaAtual==numLinha) { break; } } int i=0; linha = (char *) malloc(500); while ((c=fgetc(arquivo))) { *linha = c; if (c=='\n') { *linha = '{FONTE}'; break; } linha++; i++; } linha = linha-i; return linha; } /* A seguinte rotina abre um arquivo escolhido pelo usuário, efetua a contagem do número de linhas do arquivo e dá opção para cópia de uma linha "X" para outro arquivo, gerado em tempo de execução. */ void main() { FILE *file; char nomeArquivo[255], *linha, escolhaLinha[20]; int i, l; //Abertura do arquivo e contagem de linhas do { system(LIMPAR); printf("\nDigite o nome do arquivo: "); gets(nomeArquivo); file = fopen(nomeArquivo, "r"); if (file) i = contaLinhas(file); else printf("\nNão foi possível abrir o arquivo \"%s\"...", nomeArquivo); } while (!file); fclose(file); //Escolha da linha a ser salva no outro arquivo do { system(LIMPAR); printf("\nO número de linhas do arquivo \"%s\" é: %d\n", nomeArquivo, i); printf("\nEscolha uma linha pra gravá-la em outro arquivo: "); gets(escolhaLinha); l = atoi(escolhaLinha); if ((l <= i) && (l >= 1)) { file = fopen(nomeArquivo, "r"); linha = conteudoLinha(file, l, i); } else printf("\nA linha informada não é válida, informe novamente..."); } while ((l > i) || (l <= 0)); fclose(file); //Mostra do conteúdo da linha escolhida e gravação da mesma em arquivo printf("\nO conteúdo da linha escolhida é o seguinte:\n%s\n", linha); strcat(nomeArquivo, "-linha.txt"); file = fopen(nomeArquivo, "w"); fprintf(file, "%s", linha); fclose(file); printf("\n\nA linha selecionada foi salva no arquivo \"%s\"\n", nomeArquivo); printf("Pressione qualquer tecla para continuar...\n"); getchar(); }
Números de caracteres em arquivo
Leitura de arquivo texto separando as colunas
Codigo para criar arquivo de log
Função readConf. Ler arquivos de configuração.
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Instalando Google Chrome no Ubuntu 24.04 LTS
Quantidade de caracteres suportados na barra de endereços dos navegadores
Instalação do ubuntu num ssd externo (0)
instalar linux com intel RST ativo (4)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (33)