Problema com fread [RESOLVIDO]

1. Problema com fread [RESOLVIDO]

Pedro
phsmoura

(usa Debian)

Enviado em 31/03/2018 - 14:16h

Estou escrevendo em um arquivo usando "fwrite" com a função abaixo:
int formatahd(char nome_hd[]){
char c = 'b';

strcat(diretorio, nome_hd);

FILE *f_hdv;
f_hdv = fopen(diretorio, "wb");

if (f_hdv == NULL){
strcpy(diretorio, dir_padrao);
return -1;
}

for (i = 0; i < BLK_SIZE * BLK_QTD; i++){
fwrite(&c,sizeof(char),1,f_hdv);
}

fclose(f_hdv);

//retirar depois
f_hdv = fopen(diretorio , "rb");

if (f_hdv == NULL){
return -1;
}

for (i = 0; i < BLK_SIZE * BLK_QTD; i++){
fread(&c,sizeof(char),1,f_hdv);
printf("%c ", c);
}

fclose(f_hdv);
printf("\n");
// ate aqui

strcpy(diretorio, dir_padrao);
return 1;
}

Dei um fread ai pra conferir e ta tudo certo, porém quando uso o fread de outra função no mesmo arquivo, como no codigo abaixo, é printado na tela um monte de espaço em branco.
int typehd(char nome_hd[]){
char c;

FILE *f_hdv;
f_hdv = fopen(diretorio , "rb");

if (f_hdv == NULL){
return -1;
}

for (i = 0; i < BLK_SIZE * BLK_QTD; i++){
fread(&c,sizeof(char),1,f_hdv);
printf("%c ", c);
}

fclose(f_hdv);
printf("\n");
return 1;
}


como posso resolver?

Agradeço quem puder ajudar


  


2. Re: Problema com fread [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 31/03/2018 - 14:49h

Você deveria testar o valor de retorno de fread(), para ter certeza de que a leitura está sendo bem sucedida. No seu caso, parece que não está, de modo que o valor de c fica indeterminado.

E a causa do erro parece ser que você está esquecendo de acrescentar o nome do arquivo após o nome do diretório. E você está sendo induzido a cometer esse erro por estar reutilizando uma variável chamada diretorio, em ambas as funções, para representar algo que não é um diretório.


3. Re: Problema com fread [RESOLVIDO]

Pedro
phsmoura

(usa Debian)

Enviado em 31/03/2018 - 18:47h

Obrigado Paulo,

Na verdade o problema era outro, tinha a ver com a duvida do outro topico que voce me respondeu. Troquei meu caractere nulo e agora ta funcionando, vou começar a implementação da lista encadeada agora

Obrigado!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts