Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.297 ]
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();
}
Codigo para criar arquivo de log
Editar o arquivo /etc/rc.d/rc.local
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (3)
Dá para criar um bom jogo usando a linguagem de programação C? (0)
E como programar um sistema operacional inspirado no próprio linux usa... (3)
Como programar um sistema de controle para distribuições linux em c? ... (4)









