Copia uma linha selecionada para um arquivo secundário
Publicado por Perfil removido (última atualização em 06/05/2010)
[ Hits: 6.306 ]
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();
}
Leitura de arquivo texto separando as colunas
Montando string de conexão para banco de dados em C# através de um arquivo xml personalizado
Organizador de filmes para o IMDB
Transformando uma sequencia de binário em executável
Manipulaçao de arquivos e Meta dados em videos
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
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









