Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.095 ]
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
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
crontab executar em tempos (1)
Formatando cartão de memoria que nao formata[AJUDA] (9)
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (3)