Ir ao conteúdo
  • Cadastre-se

C erro, estou escrevendo em arquivo em hexadecimal "0x0a" e aparece o "0x0d" logo


Posts recomendados

Ajuda, estou escrevendo em um arquivo números hexadecimais, mas toda vez que escrevo "0x0A" no arquivo, antes dele aparece o "0x0D", como posso evitar esse "0x0D"? Ele está atrapalhando tudo.
exemplo do código:
"int i [11]={0x4a,0x4d,0xfe,0x0a,0x00,0x36,0x28,0x1e,0x01,0x18,0xc8};

arq=fopen("modelo2.bmp", "w");
if(arq!=NULL){
for(k=0;k<4;k++){
fprintf(arq,"%c",i[3]);
}
"

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Não, essa é apenas uma parte do código, e a sequência que quero não segue esse padrão. Veja:

"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main () {
        FILE *arq,*cop;
        int j,k;
        char p;
        int i [11]={0x4a,0x4d,0xfe,0x0a,0x00,0x36,0x28,0x1e,0x01,0x18,0xc8};

        arq=fopen("modelo2.bmp", "w");
        if(arq!=NULL){
            for(k=0;k<4;k++){
                fprintf(arq,"%c",i[k]);
            }
            for(k=0;k<6;k++){
                fprintf(arq,"%c",i[4]);
            }    
            fprintf(arq,"%c",i[5]);
            for(k=0;k<3;k++){
                fprintf(arq,"%c",i[4]);
            }
            fprintf(arq,"%c",i[6]);    
            for(k=0;k<3;k++){
                fprintf(arq,"%c",i[4]);
            }
            fprintf(arq,"%c",i[7]);
            for(k=0;k<3;k++){
                fprintf(arq,"%c",i[4]);
            }
            fprintf(arq,"%c",i[7]);
            for(k=0;k<3;k++){
                fprintf(arq,"%c",i[4]);
            }
            fprintf(arq,"%c",i[8]);
            fprintf(arq,"%c",i[4]);
            fprintf(arq,"%c",i[9]);
            for(k=0;k<5;k++){
                fprintf(arq,"%c",i[4]);
            }
            fprintf(arq,"%c",i[10]);
            fprintf(arq,"%c",i[3]);
            for(k=0;k<17;k++){
                fprintf(arq,"%c",i[4]);
            }

        }
        fclose(arq);
        system("pause");
    }

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Luis Felipe Miranda Qual editor de texto está usando para visualizar/editar o código ?

Já que 0x0D tem a ver com o Carriage Return '\r', no printf ele volta indicador de escrita para o começo da tela.

Quando você coloca 0x0A no Windows é alocado 0x0D pois tem a ver com a formatação padrão de CRLF(Carriage Return Line Feed), no linux é usado apenas 0x0A, por isso não aparece 0x0D para mim, verifique se você está usando \r ou \n

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

 

@Luis Felipe Miranda Tenta atualizar se compilador, em conjunto com gcc, etc, e verifica se continua com o problema.

adicionado 2 minutos depois

@Luis Felipe Miranda Outra solução, seria depois de salvar, carregar o arquivo e tentar remover o qual foi salvo, porém se você está fazendo tudo isso no windows, vai ser feito em vão. Tente remover os espaços, \n e \r.

 

 

p.s: eu compilei no Code Blocks no Windows e apareceu o 0x0D, depois compilei no Bash do Ubuntu, e não apareceu.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...