Ir para o conteúdo
jluis

erro em ficheiros (visual studio)

Mensagens Recomendadas

jluis

boa noites caros programadores,

tenho vindo a programar uns "mini" programas, para uma cadeira na universidade estou a fazer um programa para o modelo trepa colinas (para inteligência artificial) e estou com um problema quanto a lever a 2º vez de um ficheiro:

main.c

s=fopen(nome_fich, "r");
if(!s)
{
printf("Erro no acesso ao ficheiro dos dados\n");
exit(1);
}

initdados.c
//f passado por parametro na funcao
fscanf(s, " %d %d %d", obj, n_rest,v_max);

trepa.c
//f passado por parametro na funcao
for (i=0;i<objs-1;i++)
{

fscanf(f, " %d", preco[100]);
}

erro dado no fscanf(f, " %d", preco[100]);

Unhandled exception at 0x63EBDE1B (msvcr110d.dll) in trepa colinas.exe: 0xC0000005: Access violation writing location 0xCCCCCCCC.

o que me mete confusao no meio de isto tudo é que quanto ele entra no initdados le normalmente, mas quando vai para o trepa ele ja da erro, ja vi o codigo de todas as maneiras mas nada... nao dou com nada...

nota: uso o visual studio 2012

Editado por apocsantos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Talvez

fscanf(f, " %d", preco[i]);

Se definiste o array preco com 100 elementos, o elemento preco[100] nao existe.

Duas notas:

(i) o "%d" do scanf ja tem incluido a funcao de ignorar espacos em branco antes do numero. Usando " %d" estas a pedir ao programa para ignorar espacos em branco duas vezes :)

(ii) o aspecto normal dum ciclo for e for (i=0; i<limite; i++). No teu programa tens um - 1 que parece ser errado. Verifica isso.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jluis

boa noite... antes de mais queria agradecer a ajuda dada...

caro pmg ja tentei as duas notas que me "deixas-te" mas o erro la continua...

ja corri varias vezes o debug e a unico factor que muda de é o _file que quando "entra" a primeira vez no ficheiro esta a 3 e depois ao passar para a segunda funçao que pede o ficheiro passa a 4... quanto a isto do _file (elemento do FILE *s) gostaria de saber o que quer mesmo dizer o dito cujo pois nao consegui entender...

linha onde da o "break" no debug:

input.c

if (longone)
*(long UNALIGNED *)pointer = (unsigned long)number;

segue o link onde podem fazer ao download do codigo tudo...

https://dl.dropbox.com/u/62962077/Trepa%20colinas.zip

Editado por jluis

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Liga o maximo de warnings do teu compilador.

O teu compilador pode-te ajudar a encontrar alguns erros no codigo.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jluis

boas...

hoje depois de muitas horas devolta deste erro deparei-me com a coisa mais estupida de sempre...

o que faltava era um & :(

ficando

fscanf(f, " %d", &preco[100]);

muito obrigado pela ajuda prestada de qualquer das formas...

abraços

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

pois, mas sem saber a declaração de preco seria impossível saber.

é por essa razão que

coloca o código todo ....

se preco tivesse sido declarado como e seguinte, o código não teria problemas nenhum:

int * preco[1000];

para a próxima, a resposta será imediata se tal pedido for respondido


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.