Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

1. Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 24/04/2010 - 11:23h

Opa! Bom, eu fiz um programa, na verdade uma agenda e esta egenda grava,lista, exclui e etc determinados dados de um arquivo de textos. Só que tem um problemiha, ele solicita o nome do contato, a cidade, e finaliza, sendo que era p/ pedir o telefone também. E, quando vamos ver no arquivo de texto (dados.txt) eu tenho a saída :

Telefone do contato: Nome: Andre
Cidade: Sao
Telefone: -1209015568
-----------Voltar ao menu principal ?
[1]Sim


Segue o código do programa :

http://pastebin.com/tpidvVAy

Alguém poderia dizer onde está o erro ?

Obrigadim.


  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 24/04/2010 - 12:16h

olhando mais um pouco o código, vi que você fechou a saída padrão com o close(1) nas opções 1 e 3, se rodar o programa e escolhe a opção 2, no final você verá a mensagem:
Voltar ao menu principal ? \n[1]Sim

Porque na opção 2 não foi fechada a saida padrão (stdout).

Como foi fechada o programa passou a usar o arquivo dados.txt como saída, se olhar nele verá a mensagem:
Voltar ao menu principal ? \n[1]Sim

Então toda as vezes o if/else é executado mas "nas escuras" por assim dizer. :P
Valeu!

3. Re: Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 24/04/2010 - 11:25h

Ah, e quando compilo recebo os seguintes warnings :

junior@junior:~/Desktop$ gcc cadastra.c -o cadastra
cadastra.c: In function ‘main’:
cadastra.c:25: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[500]’
cadastra.c:27: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[500]’



4. Re: Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/04/2010 - 11:51h

Tenta colocando a variável telefone como array de char no lugar de inteira, aqui deu certo.


5. Re: Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 24/04/2010 - 12:03h

Primeiramente, obrigado pelas respostas.

Samuel, agora foi compilado com sucesso, sem warning algum. Porém, o programa não executa a parte final, do if/else. O que poderia ser ?


6. Re: Erro ao escrever em aquivo (linguagem C) [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 24/04/2010 - 12:23h

Consegui! Obrigado pela ótima explicação, tirei meu chapéu pra tu aqui agora.

Valeu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts