Ajuda com algoritmo de ordenação em C.
Olá amigos, meu professor me passou um trabalho que é elaborar um programa em C onde se gera um arquivo TXT com números de 0 a 999 de forma aleatória e que esse arquivo tenha o tamanho de 2gb, posteriormente abra esse mesmo TXT. ordene todos os valores e salve em um novo arquivo...usei o método Quicksort, testei com diversos valores, até 1gb funciona bacana, mas com 2gb ele dá um erro de execução logo após ter criado o primeiro TXT ( desordenado ). alguém tem ideia de oque pode estar ocasionando esse erro ?
Re: Ajuda com algoritmo de ordenação em C.
Primeiro, veja onde você está criando esse arquivo. Obviamente, veja se tem espaço ( uns 5GB pra garantir, já que são dois arquivos de 2GB ). Dai veja como está formatado. É melhor rodar isso no hd, seja em ext-qquer coisa do linux, seja em NTFS. Se você está criando esse arquivo em um pendrive formatado em fat, pode ser isso.
Eliminadas essas possibilidades simples, tem que ver o código. Por acaso a variável que você está usando como contador para ver se deu o tamanho do arquivo não está sub-dimensionada ? Se é C, bota ela como long e vê se resolve.
Fora isso, teria que saber exatamente qual erro ele dá, e também ver se está criando o primeiro arquivo até o fim mesmo, ou se está dando erro antes. Seria mais útil voce postar o codigo do programa.
Re: Ajuda com algoritmo de ordenação em C.
Obrigado pelo retorno amigo, então estou executando no HD mesmo, em NTFS tem bastante espaço livre...é em C, quando me alertou fiquei na duvida e testei com long, após a conclusão do arquivo desordenado ele trava ( ele cria o primeiro arquivo direitinho, completo com os 2gb)...vou postar o codigo
Re: Ajuda com algoritmo de ordenação em C.
Vamos lá, alguns palpites pra garantir :
Depois do for () que cria o arquivo, feche ele ( fclose() ) , pra garantir que esteja tudo escrito e buffers limpos.
Coloque também um fclose() depois da primeira ver que usa "orde" para ler do arquivo para a variavel p, já que você está usando o mesmo descritor de arquivo "orde" para abrir o arquivo que vai gravar.
E claro, coloque um fclose() no final do programa, depois que criou o arquivo teste2.txt.
Ponha também uns printf no meio dessa parte que abre o arquivo e chama o quieck sort, para saber até onde o programa está chegando antes de dar erro.