Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas ao dar fopen em arquivo.txt


Ronaldo Lanhellas

Pergunta

Bom, eu uso o comando REG EXPORT para exportar uma registro do windows para um arquivo txt qualquer, depois dou um fopen neste arquivo txt criado para que seja exibido, porém ele não exibe nada na tela, é como se tivesse funcionando mais não exibe nada na tela. Então fiz um teste, peguei todo conteudo de dentro deste txt e criei um novo txt (sem o reg export) e mandei o fopen abri-lo, e advinhem ? funcionou perfeitamente.

Ae fiz um outro teste mais agora com o arquivo criado pelo REG EXPORT, mandei um fopen com o seguinte comando:

if ((arquivo = fopen("C:\\PASTA\\confuser.txt","r"))==NULL)
printf("O arquivo não pode ser aberto");

ch = getc(arquivo);
while (ch != EOF){
printf("%c",ch);
ch = getc(arquivo);
}
getch();
fclose(arquivo);
Bom da forma que esta ele abre o arquivo confuser.txt (que foi criado pelo REG EXPORT) porém ele não mostra nada, é como se não tivesse nada dentro do arquivo (mais tem), então tentei o seguinte comando:
if ((arquivo = fopen("C:\\PASTA\\criadopormim.txt","r"))==NULL)
printf("O arquivo não pode ser aberto");

while (ch != EOF){
printf("%c",ch);
ch = getc(arquivo);
}

e misteriosamente ele mostra apenas a primeira letra do arquivo txt, ou seja, ele printa na minha tela a letra "w", pois o conteudo do meu arquivo txt começa assim: Windows Registry ...

Agora sinceramente estou perdido, não sei o que esta acontecendo para que ocorram esses problemas, se alguém poder me ajudar agradeço imensamente, pois estou desenvolvendo um software para a empresa onde trabalho e estou "estancado" neste erro !

Editado por Ronaldo Lanhellas
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá ronaldo...

Eu estou tentando entender o seu problema... Você tem um arquivo .txt onde salvou algumas coisas com o reg export... Tudo bem. Se o arquivo foi criado e tá tudo certo lá dentro nem precisamos mais considerar que o problema seje relacionado ao reg export né? Que é o que eu mais temia, porque não entendo nada disso...

Mas voltando ao caso, você fecha o fluxo (stream) do arquivo? Provavelmente ele foi aberto no modo w (write), deu um fclose nele antes de começar a ler ele denovo ?

Outra coisa que poderia dar errado, talvez, seria o getc. Tem como você utilizar fscanf sempre salvando o retorno do fscanf ? Fica melhor depois para você descobrir algum erro !

Tipo assim:

if ((arquivo = fopen("C:\\PASTA\\confuser.txt","r"))==NULL)
printf("O arquivo não pode ser aberto");

char ch;
int retorno = 1; // retorno temque ser int para caber EOF

while( retorno != EOF ){
retorno = fscanf(arquivo,"%c",&ch);
printf("%c",ch);
// Aqui você pode tentar debugar, adicionando, por exemplo:
printf("\nValor do retorno: %d\n",retorno); 
}

getch(); // trava a tela
fclose(arquivo);

Editado por Rafael K. Arakaki
Link para o comentário
Compartilhar em outros sites

  • 0

A variável retorno é inicializada com 1 somente para ter certeza de que ela vai ser diferente de EOF da 1° vez que entrar no while, porque logo após entrar no while ela recebe o retorno da função fscanf.

A função fscanf retorna EOF para a variável retorno quando ela não conseguir nada. Daí no próximo teste de condição sai do while.

Agora que eu pensei sobre isso, fiz uma pequena correção:

if ((arquivo = fopen("C:\\PASTA\\confuser.txt","r"))==NULL)
printf("O arquivo não pode ser aberto");

char ch;
int retorno; // retorno temque ser int para caber EOF

retorno = fscanf(arquivo,"%c",&ch);
while( retorno != EOF){
printf("%c",ch);
// Aqui você pode tentar debugar, adicionando, por exemplo:
printf("\nValor do retorno: %d\n",retorno);
retorno = fscanf(arquivo,"%c",&ch);
}

getch(); // trava a tela
fclose(arquivo);

Assim fica melhor percebeu? Porque no outro código, ele da printf duas vezes no último caracter do texto.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...