Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.187 ]
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(); }
FileCopy - Copiador de Arquivo de Texto
Executar um arquivo com o programa padrão no C#
MakeInt - gerador de wordlist numérica
Nenhum coment�rio foi encontrado.
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
Software livre - será que eu estou tão errado assim? (9)
Boot do PosRog so funciona em notebook (1)