Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

igorsouza2012

Arquivo Binario

Mensagens Recomendadas

igorsouza2012

Galera eu tava fazendo um trabalho com arquivo binario e tava tudo rodando perfeitinho.

Ate que no dia de entregar o trabalho o professor foi ver o codigo e tiro 4 pontos meus porque eu tinha posto &

para ler e escrever string.

Segundo ele isso daria erro. Mas o mesmo não quiz me dizer os erros possiveis, e ate agora eu nao  encontrei nem um no meu programa.

Sera que algum de voces podem me dizer o que realmente pode acontecer por eu ter posto o & no programa?

-------------------------------------------------------------------------------------------------------------------------------------------------------------

Nao vou por o codigo todo porque é muito grande vou por só um caso.

"

    case 4:

arqb=fopen("C:\\UFF\\Prog 2\\trabalho\\Cadastro arquivo binario\\arq.bin","rb");

arqbt=fopen("C:\\UFF\\Prog 2\\trabalho\\Cadastro arquivo binario\\arqbt.bin","wb");

printf("Digite a matricula do aluno a ser removido!\n");

scanf("%i",&mataux);

while (!feof(arqb))

{

fread(&mat, sizeof(int),1,arqb);

fread(&nome, sizeof(char),30,arqb);

fread(&sexo, sizeof(char),30,arqb);

if(!feof(arqb))

{

if(mat != mataux)

{

fwrite(&mat, sizeof(int),1,arqbt);

fwrite(&nome, sizeof(char),30,arqbt);

fwrite(&sexo, sizeof(char),30,arqbt);

}

}

}

fclose(arqb);

fclose(arqbt);

arqb=fopen("C:\\UFF\\Prog 2\\trabalho\\Cadastro arquivo binario\\arq.bin","wb");

arqbt=fopen("C:\\UFF\\Prog 2\\trabalho\\Cadastro arquivo binario\\arqbt.bin","rb");

while(!feof(arqbt))

{

fread(&mat,sizeof(int),1,arqbt);

fread(&nome,sizeof(char),30,arqbt);

fread(&sexo,sizeof(char),30,arqbt);

if(!feof(arqbt))

{

fwrite(&mat,sizeof(int),1,arqb);

fwrite(&nome,sizeof(char),30,arqb);

fwrite(&sexo,sizeof(char),30,arqb);

}

}

fclose(arqb);

fclose(arqbt);

break;

"

Segundo o professor daria erro. Mas nem um compilador que eu tentei deu erro...

Voces saberiam dizer o erro?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pinguim

ja correste o programa?

pode não dar erros mas isso nao significa que faz aquilo que queres

Seja como for

O & significa 'adress of' em C, ou seja, 'endereço de'

usamos o & quando queremos o endereço de memoria de uma variavel

A razão para não se usar & para ler strings eh porque na realidade são arrays de caracteres

E o nome de um array eh na realidade um ponteiro para esse array

o nome de um array não contem a informação que esta na variavel (como nas outras variaveis) mas sim o endereço de memoria do inicio do array

daí NÃO se usar o & num array (o mesmo se aplica obviamente a arrays de char's (strings))

talvez não tenha explicado da melhor maneira, mas talvez deh para perceber

Resumindo, não usas & com arrays, porque o nome dos arrays ja invoca um endereço de memoria, não precisas de invocar um endereço de memoria de um endereço de memoria

Fazeres isso eh o mesmo que fazeres & a um ponteiro... não vais receber o endereço de memoria para o qual o ponteiro aponta, mas sim o endereço de memoria do ponteiro em si...

Já não me recordo é o que vais obter ao fazer & a um array... provavelmente o mesmo que fazer a um ponteiro... mas eh uma questão de exprimentar

Espero ter ajudado


"Rather than continuing to seek the truth, simply let go of your views" - David RossC, C++, C#, Pascal

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
igorsouza2012

ajudo sim... muito obrigado...

O estranho é que nao esta dando erro.

Por isso achei que nao deveria ter problemas em deixar como esta...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pinguim

mas testaste, ou soh o compilaste?


"Rather than continuing to seek the truth, simply let go of your views" - David RossC, C++, C#, Pascal

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.