Linhas de arquivos

1. Linhas de arquivos

Mario
vidadahora

(usa Outra)

Enviado em 19/07/2016 - 22:32h

Gente eu quero desenvolver um software que tipo lê um arquivo da linha que eu quiser, eu tentei de varias maneiras mas nao deram muito certo, alguém pode me ajudar?


  


2. Re: Linhas de arquivos

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 19/07/2016 - 22:43h

Poste o código para que possamos ajudá-lo.

O que posso dar de dica, se usando C++, é utilizar std::fstream para abrir o arquivo e usar a função std::getline.




3. Re: Linhas de arquivos

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/07/2016 - 17:16h

Outra dica é que o C ou C++ (e tipicamente também os sistemas operacionais sobre os quais eles rodam) geralmente não têm a menor noção do que são linhas dentro de um arquivo. Assim sendo, a única forma de ler a N-ésima linha de um arquivo é ler primeiro as N-1 linhas que a antecedem.

E se você tiver a pretensão de sobrescrever linhas num arquivo preexistente, terá de ser ainda mais cuidadoso, uma vez que se a linha nova tiver um tamanho diferente do conteúdo anterior, todas as linhas que vierem depois dela serão afetadas.


4. Re: Linhas de arquivos

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/07/2016 - 08:55h

vidadahora escreveu:

Gente eu quero desenvolver um software que tipo lê um arquivo da linha que eu quiser, eu tentei de varias maneiras mas nao deram muito certo, alguém pode me ajudar?

Cara, se tu postasse o code que tu já tentou fazer, ajudaria bastante.
Eu estava com uma duvida parecida, eu não conseguia ler determinadas linhas de um arquivo, mas veja só este trecho abaixo:

Trecho de code retirado do programa 2wireless-7.0:
int content_outputopen(){
FILE *content,*check;
char custom_path_openfiles[100] = "/root/custom_open.path";
char content_output[256];
int aux=0,line=0;

if((content=fopen(custom_path_openfiles,"r"))==NULL)
{
fprintf(stderr,"ERROR (content_outputopen): failed to read (custom_path_openfiles) file: %s\n",strerror(errno));
exit(1);
}
else
{
remove(custom_path_openfiles);
while(fgets(content_output,sizeof(content_output),content)!=NULL) //Lê o conteúdo do file descriptor "content" e armazena em "content_output".
{
for(aux=0;content_output[aux];aux++) //aux lê todas os caracteres de content_output até...
if(content_output[aux]=='\n') //encontrar uma quebra de linha.
{
line++; //Incrementa line e printa conteúdo:
printf("Conf file %d: %s",line,content_output);
}
if(line) //Se line (!)
{
for(aux=0;content_output[aux];aux++)
if(content_output[aux]=='\n') content_output[aux]=0; //Se existe "\n", remove pra passar para o file descriptor "check".
if((check=fopen(content_output,"r"))==NULL) //Lê os arquivos da lista de nomes, se "NULL":
{
printf("Conf file %d: not found\n",line);
}
else
{
if((check=fopen(custom_path_openfiles,"a+"))==NULL)
{
fprintf(stderr,"ERROR (content_output_open) failed to write path in (custom_path_openfiles) file: %s\n",strerror(errno));
exit(1);
}
else //Se chegou até aqui, escreve o novo arquivo de nomes em "custom_path_openfiles" com os arquivos existentes:
{
fprintf(check,"%s\n",content_output);
fclose(check);
}
}
}
}
fclose(content);
}
return 0;
}

Detalhe: este code é precário e deve ser adaptado, pode também existir linhas repetidas.

--
Just bring us some beers, and then we can talk about our systems. :)







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts