Ir ao conteúdo
  • Cadastre-se
Mac Psicodelico

Fscanf() não lê o inteiro 0 no começo do arquivo

Recommended Posts

Olá, Boa tarde!

Estou com um problema chato em meu programa:
arq = fopen("logDigitado.txt","w+");
fprintf(arq,"%d",escrita);
Conteudo do arquivo: "038913"
fscanf(arq,"%d",&leituraDigitada);
txtSaida->Text = txtSenha->Text+":"+txtSenha2->Text+ " - " +Convert::ToString(leituraDigitada);

SAIDA: "hora":"minuto - 38913

A minha duvida é por que ele ignora o "0" inicial do arquivo texto?
OBS: SE HOUVER "0" NO MEIO DO TEXTO ELE NÃO IGNORA, ELE IGNORA APENAS OS INICIAIS.
Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser porque 0 é prefixo de numero octal,se quiser ler isso com um inteiro é melhor tirar o 0


mas só por curiosidade,voce conseguiu colocar esse numero "038913" no arquivo?que compilador voce usa?grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Irmão, bom dia!
Obrigado pela resposta, então eu também pensei na hipótese de ser o numero octal só que ele escreve no arquivo a saída completa com o inicial "0", então lógicamente o fscanf() também conseguiria ler este dado né...estou usando a IDE VISUAL STUDIO 2010 C/C++ e o compilador não exatamente qual é usado no VISUAL STUDIO mais acho que é um tal de "cl".

OBS: (Eu não posso deixar de ler este "0" é uma senha entende?)

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é só um problema de formato de saida(alguma coisa como "%0ndezeros"  pra exibir os zeros à esquerda resolveria,tirando os problemas de interpretação de formatos se um numero tivesse um 0 como prefixo e um outro numero no arquivo,nao)

se for uma senha e voce precisar fazer alguma comparação pra ver se a senha esta correta,pode fazer a comparação que vai haver correspondencia se forem iguais

 

mas eu nao posso afirmar nada porque eu tambem uso o VS C++ 2010 professional e se eu fizesse

int escrita = 038913;

ele ja reclamaria,há menos que voce esteja compilando pra código em C puro e isso seja uma caracteristica de C que eu nao conheço,então sim ele pode aceitar isso,mas se tiver compilando default é uma tremenda bruxaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado irmão! Recebi uma resposta também em outro fórum que parece ser a explicação correta, rsrs... Mas enfim eu tentei ler como String:
"
Ele lê. O que acontece é que você está querendo que um zero à esquerda de um inteiro seja representado na string. Isso não acontece. Leia como string ao invés de ler como inteiro, se possível.

A resposta dada em no link do Clube do Hardware ("porque o número é octal") está errada por dois motivos:
1- Na base oito, os dígitos válidos vão de 0 a 7. Ou seja, seu '9' transforma esse número num dado inválido para a base octal.
2- %d lê inteiros na base 10. %o é que lê octal."

 

String^ leituraAutomatica={""};
arq = fopen("logDigitado.txt","a+");
fscanf(arq,"%s",leituraAutomatica)
;
Ele não retorna nada apenas mantem o valor da sua declaração = "";
O que você acha que pode ser? Por que não retorna nenhum valor, por que não armazena nada na String^??

Eu estou achando por quê é String do VS C++ do pacote .NET e pode existir este conflito de c para c++.
a string do C é std::string e a string do C++ é String^.

Att.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quieto por que? Estou em ambiente Microsoft(VB), C só existe char* e visualC++ String^.
Existe até funções para conversões para solucionar... e sobre o Octal realmente é vdd, quieto deveria ficar eu.... lol.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×