Problema com código [RESOLVIDO]

1. Problema com código [RESOLVIDO]

Josafá
zafar

(usa Ubuntu)

Enviado em 26/10/2011 - 10:40h

Fiz um código aqui mas não consigo encontrar o erro, sou péssimo em programação e por isso peço ajuda aos universitários.

Esse programa lê um arquivo e imprime na tela o correspondente em binário, não sei onde está o erro. HELP!!



/* verbinario.c */

#include <stdio.h>

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))


void byteToVetor (unsigned char b, char* vetor);


int main (int argc, char* argv[])
{
FILE *arq;
char vetor[7];
char buf[3];


if (argc!=2)
{
printf ("Parametro incorreto.\n");
printf ("Informe apenas o nome do arquivo\n");
return 1;
}

if (!(arq=fopen(argv[1],"r")))
{
printf ("Nao foi possivel abrir o arquivo!\n");
return 1;
}


while (f=fread(buf,1,1,arq))
{

byteToVetor (buf[0],buf);
printf ("%s ",buf);
printf ("\n");

}

printf ("\n");
close (arq);
}


void byteToVetor (unsigned char b, char* vetor)
{
int i;
i = 0;
while (i < 8)
if CHECK_BIT(b, i) { vetor[i] = 1;} else {vetor[i] = 0;}
i++;

}




  


2. Re: Problema com código [RESOLVIDO]

Josafá
zafar

(usa Ubuntu)

Enviado em 26/10/2011 - 10:48h

O fórum apagou parte do código, abaixo está o link para o código completo

http://tinypaste.com/52d17d21





3. Re: Problema com código [RESOLVIDO]

Levi Gomes
levi linux

(usa Arch Linux)

Enviado em 26/10/2011 - 13:19h

Bom dia!
Entendo pouco de C, mas dá uma olhada em algumas coisas.
Na linha 32, tem uma variável f, não declarada.
Outra coisa verifica a variável vetor.
Embora não seja obrigatório, coloca um return(0) , ao final de main .

Vê isso também:


gcc -Wall -W nome_do_arquivo.c


Boa sorte!!!


4. Re: Problema com código [RESOLVIDO]

Josafá
zafar

(usa Ubuntu)

Enviado em 26/10/2011 - 17:20h

Obrigado, fiz as correções que consegui encontrar mas não funcionou.

http://tinypaste.com/b17d901a


Pago um café com pão de queijo pra quem conseguir fazer esse código funcionar.


5. Re: Problema com código [RESOLVIDO]

Levi Gomes
levi linux

(usa Arch Linux)

Enviado em 26/10/2011 - 17:22h

Você conseguiu compilar?
Aqui depois que fiz as alterações citadas compilou, só não cheguei a testar o funcionamento.


6. Re: Problema com código [RESOLVIDO]

Edmar Wantuil
wantuiliv

(usa Ubuntu)

Enviado em 26/10/2011 - 17:36h

Amigo falta declara, a variavel o tipo dela sera size_t
seu arquivo ficara:

/* verbinario.c */

#include <stdio.h>

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))


void byteToVetor (unsigned char b, char* vetor);


int main (int argc, char* argv[])
{
FILE *arq;
char vetor[7];
char buf[3];
size_t f;

if (argc!=2)
{
printf ("Parametro incorreto.\n");
printf ("Informe apenas o nome do arquivo\n");
return 1;
}

if (!(arq=fopen(argv[1],"r")))
{
printf ("Nao foi possivel abrir o arquivo!\n");
return 1;
}

while (f= fread(buf,1,1,arq))
{
byteToVetor (buf[0],buf);
printf ("%s ",buf);
printf ("\n");

}

printf ("\n");
close (arq);
}


void byteToVetor (unsigned char b, char* vetor)
{
int i;
i = 0;
while (i < 8)
if CHECK_BIT(b, i) { vetor[i] = 1;} else {vetor[i] = 0;}
i++;

}


7. Re: Problema com código [RESOLVIDO]

Edmar Wantuil
wantuiliv

(usa Ubuntu)

Enviado em 26/10/2011 - 18:02h

Amigo achei mais um erro na função: byteToVetor do modo como você colocou sem chaves o i++ não estava entrando no while assim entrando num looping infinito segue o codigo correto:
/* verbinario.c */

#include <stdio.h>

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))


void byteToVetor (unsigned char b, char* vetor);


int main (int argc, char* argv[])
{
FILE *arq;
char vetor[7];
char buf[3];
size_t f;

if (argc!=2)
{
printf ("Parametro incorreto.\n");
printf ("Informe apenas o nome do arquivo\n");
return 1;
}
arq=fopen("lol","r");
if (!arq)
{
printf ("Nao foi possivel abrir o arquivo!\n");
return 1;
}

while (f= fread(buf,1,1,arq))
{
byteToVetor (buf[0],buf);
printf ("%s ",buf);
printf ("\n");
}

printf ("\n");
close (arq);
}


void byteToVetor (unsigned char b, char* vetor)
{
int i;
i = 0;
while (i < 8)
{
if CHECK_BIT(b, i)
vetor[i] = 1;
else
vetor[i] = 0;
i++;
}
}

Espero que te ajude! :-)


8. Re: Problema com código [RESOLVIDO]

Edmar Wantuil
wantuiliv

(usa Ubuntu)

Enviado em 26/10/2011 - 22:59h

Desse ultimo codigo que te mandei mude a linha que está arq=fopen("lol","r"); para arq=fopen(argv[1],"r");
Espero que de tudo certo :)


9. Re: Problema com código [RESOLVIDO]

Josafá
zafar

(usa Ubuntu)

Enviado em 27/10/2011 - 13:13h

O código compilou mas na hora de executar apareceram os zeros e uns todos bagunçados gostaria que aparecessem assim 01010010101 um do lado do outro como se fosse um texto.


10. Re: Problema com código [RESOLVIDO]

Edmar Wantuil
wantuiliv

(usa Ubuntu)

Enviado em 27/10/2011 - 16:21h

Amigo sinto muito mas a dificuldade que já está tento não é mas com C, e sim com sua logica. Revise ela para achar o seu erro.


11. Re: Problema com código [RESOLVIDO]

Josafá
zafar

(usa Ubuntu)

Enviado em 28/10/2011 - 08:55h

Revisei minha lógica e não consegui encontrar o erro, só sei que tá aparecendo tudo embolado no terminal do meu ubuntu.


12. Re: Problema com código [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 28/10/2011 - 12:00h

zafar escreveu:

Revisei minha lógica e não consegui encontrar o erro, só sei que tá aparecendo tudo embolado no terminal do meu ubuntu.


[/i][/i]

Poste o que está aparecendo no terminal.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts