Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.071 ]
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(); }
Agenda (fones, compromissos, aniversários) em C usando arquivos binários
Conversão de arquivos texto entre Windows e Linux
Editar o arquivo /etc/rc.d/rc.local
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)