Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.159 ]
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(); }
Conversão de arquivos texto entre Windows e Linux
Contando a quantidade de palavras de um arquivo texto
Números de caracteres em arquivo
Nenhum coment�rio foi encontrado.
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como gerar um podcast a partir de um livro em PDF
Organizando seus PDF com o Zotero
Erro no realm join [Resolvido]
Um programa para baixar vídeos: Parabolic
Como Definir o Painel Principal em Múltiplos Monitores no Linux Mint
Sempre que vou baixar algum pacote acontece o erro dpkg (2)
BlueMail não abre no Kubuntu 25.04 (6)
Não consigo montar meu cartão SD (5)
aplicativos criados com webapp-manager não aparecem no menu do xfce (1)