Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AlexandrePrezzi

Organização de Arquivos

Recommended Posts

Estou com um problema em trabalhar com arquivos em C ...

Tenho um arquivo com alguns registros e estao da seguinte forma (em anexo) (reduzi o tamanho do arquivo para facilitar)

Preciso primeiramente ordenar esse arquivo (baseando-se pelos primeiros 7 campos ), ja tentei de diversas formas
mas ate agora sem resultado

Gostaria que alguem me ajudasse com esse caso.

Segue o codigo do q tenho feito ate entao

#include <stdio.h>
#include <conio.h>

FILE *arq;
char Linha[100];
char *result;
int i;

void ler(){

//clrscr();
// Abre um arquivo TEXTO para LEITURA
arq = fopen("arquivo2.txt", "rt");
if (arq == NULL) // Se houve erro na abertura
{
printf("Problemas na abertura do arquivo\n");
return;
}
i = 1;
while (!feof(arq))
{
// Lê uma linha (inclusive com o '\n')
result = fgets(Linha, 100, arq); // o 'fgets' lê até 99 caracteres ou até o '\n'
if (result) // Se foi possível ler
//printf("Linha %d : %s",i,Linha);
printf("%s",Linha);
i++;
}
fclose(arq);
system("pause");
}

int pesquisar(){
arq = fopen("arquivo3.txt", "rt");
int posicaoAtual = ftell(arq);
//guarda tamanho do arquivo
long tamanho;
// calcula o tamanho
fseek(arq, 0, SEEK_END);
tamanho = ftell(arq);
// recupera o estado antigo do arquivo
fseek(arq, posicaoAtual, SEEK_SET);

int inicio = 0 ;
int fim = tamanho;
int meio = ((inicio+fim)/2)+1;
printf("Inicio %d \n", inicio);
printf("Fim %d \n", fim);
printf("Meio %d \n", meio);
fseek(arq, meio, SEEK_SET);
result = fgets(Linha, 88, arq);
if (result) // Se foi possível ler printf("Linha %d : %s",i,Linha);
printf("%s",Linha);

system("pause");

}
int ordenar(){
arq = fopen("arquivo2.txt", "rt");
i = 1;
while (!feof(arq))
{
// Lê uma linha (inclusive com o '\n')
result = fgets(Linha, 100, arq); // o 'fgets' lê até 99 caracteres ou até o '\n'
if (result) // Se foi possível ler
//printf("Linha %d : %s",i,Linha);
printf("%s",Linha);
i++;
}

system("pause");
}

int menu() {
int opcao = 0;
//printf("%d", sizeof(int)+sizeof(int)+sizeof(float)+sizeof(char[40]));
printf("\n-------------------------------------------------------------");
printf("\nAplicação manipulação arquivos em C para funcionarios !! ");
printf("\n-------------------------------------------------------------");
printf("\n1 - Mostra arquivo ----");
printf("\n2 - Pesquisar ---");
printf("\n3 - Ordenar ---");
printf("\n0 - Encerrar Aplicação --------------------------------------");
printf("\nInforme a opção desejada -----------------------------------:");
scanf("%d", &opcao);
return opcao;
}

int main(){
int opcao = menu();
switch(opcao){
case 1:
ler();
break;

case 2:
pesquisar();
break;

case 3:
ordenar();
break;
default:
break;
}
}

segue abaixo registros do arquivo

3192407Measurement of weak radioactivity Pall Theodorsson 41996
3467070How to draw portraits in colored pencil from Lee Hammond 11997
3389270Basic electronics math Clyde N Herrick 51997
0062004Swift and effective retribution Joseph T Stanik 41996
1803239The Naval Institute guide to naval writing Robert Shenk 21997
3063661Gauguins intimate journals Paul Gauguin 61997
6743242ferns of Britain and Ireland C N Page 21997
4280103Black demographic data 17901860 Clayton E Cramer 41997
3992693Inside edge Christine Brennan 11997
0528171Practical spirituality John Randolph Price 51996
5195701Direct instruction reading Douglas Carnine 31997
4353487House of Lords Official Report Parliamentary Hansard 32006
6688800introduction to continental philosophy West David 51996
6820393introduction to aesthetics Dabney Townsend 71997
3467069riesgo en el comercio hispanoindiano Oscar Cruz Barney 11998
4146448commercialisation of English society 100015 Richard H Britnell 21996
2300844Cowboy justice Jim Gober 61997
1666018The cape of Don Francisco Torquemada Benito Perez Galdos 61996
1036106burning of Los Angeles Samuel Maio 51997
4751677The hiding place Corrie Ten Boom 11997
6370785Tolstoy woman and death David Holbrook 61997
0139040The savvy womans success bible Tina Santi Flaherty 11997
5697717Subjectivity and intersubjectivity in modern Roger Frie 51997
5104801Land use practice and forms Delaney John J 21998
2223618Evangelicals and politics in antebellum AmeriRichard Carwardine 61997
1394098Confirmed in Christ Roy G Gesch 61997
2570114Murphys trail Gary Paulsen 81997

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por Hacker_Buiu
      Neste tutorial que criei você vai aprender a tirar arquivos desnecessários do Windows sem usar programa:
       
      1)Digite Executar na barra de espaço do Windows 10>Depois digite "prefetch" sem as aspas duplas,exclua todos os arquivos de dentro dessa pasta selecionando-os com Control+a.Se aparecer mensagem,assinale todos para a frase "Selecione tudo isso para todos os arquivos atuais" alguma coisa assim,delete/exclua tudo,se pedir para ignorar clique no botão ignorar todos.
      2)Digite Executar de novo>Agora digite "temp" sem as aspas duplas,de novo selecione tudo apertando no teclado control+a.Delete Tudo.Faça o mesmo processo do que o primeiro.
      3)Digite novamente Executar, só que agora,digite "%temp%" sem as aspas duplas,de novo selecione tudo apertando no teclado control+a,Delete tudo ignorando os arquivos,se tiver em algum desses 3 o arquivo vulkan ou nvidia não delete são os únicos primordiais para funcionar a placa de vídeo.Se deletou dá para restaurar na lixeira,por fim esvazie a lixeira para que o Windows fique mais leve.
    • Por juninhogpe
      Boa tarde.
      Estou com problemas ao subir arquivos no formato MP3 com o código abaixo. Sempre usei ele e hoje apenas aparece erro.
      Abaixo o código:
       
      $titulo = $_POST['titulo']; if ($titulo != ""){ $texto = $_POST['texto']; $padre = $_POST['padre']; $data = date("Y-m-d", strtotime($_POST['data'])); $audio = isset($_FILES["audio"]) ? $_FILES["audio"] : FALSE; $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; if($arquivo && $audio){ if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $arquivo["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.');</script>"); } if(!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>"); } else{ preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); $dd = date("msdYiH"); $imagem_nome = $dd. "." . $ext[1]; $imagem_dir = "../am/" . $imagem_nome; $up = move_uploaded_file($arquivo["tmp_name"], $imagem_dir); preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio["name"], $ext); $dd = date("msdYiH"); $audio_nome = $dd. "." . $ext[1]; $audio_dir = "../am/" . $audio_nome; $up_audio = move_uploaded_file($audio["tmp_name"], $audio_dir); if ($up){ $sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome', '$data','$audio_nome', '$texto', '$padre')"); } } }else echo utf8_encode("<script> alert ('Erro no upload.');</script>"); if($conn->query($sql) === TRUE){ echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>"); echo utf8_encode('<script>window.location="palavra.php";</script>'); } else{ echo "Erro: " . $sql . "<br />" .$conn->error; echo utf8_encode('<script>window.location="palavra.php";</script>'); } }  
      O que estou fazendo de errado?
      Obrigado.
    • Por Jefferson andre
      Saudações, como eu faço para monitorar o conteúdo de novos arquivos criados em uma determinada pasta?
       
      Motivo: quando se envia um arquivo para a Sefaz ela retorna alguns arquivos sendo o primeiro o mais importante pois o seu conteúdo informa o nome do próximo é assim por diante.
      Agradeço a ajuda e por sugestões
    • Por pandinha_000
      Olá,
      Estou desenvolvendo um código em c++ utilizando manipulação de arquivos .txt (não por ponteiros), e gostaria de saber como fazer para que o algoritmo "pule" a primeira linha em branco do meu arquivo e passe já para a próxima, com dados válidos (na leitura). A propósito, existe a possibilidade de, ao escrever no arquivo, essa primeira linha em branco não exista?
      Desde já agradeço.
    • Por Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.