Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

igorsouza2012

Arquivo Binario

Recommended Posts

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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.