Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) C/C++ Ascii


Thiago lablonsk

Pergunta

Boa noite, Eu preciso ler um arquivo que contem caracteres da tabela ascii e manipular seus valores. Exemplo char a='255' armazeno seu caracter especial no arquivo e depois quero ler em formato de int para fazer comparações com inteiro. Exemplo

char c=fgetc(arquivo);

b=c;

printf("%d",b); // resultado saia 255;

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Tive um outro problema

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


    int n=0,spc=0,m=0;
    unsigned char simbol[256];
    FILE *arquivo,*arquivo2;
     typedef struct no
    {
      int contador,simbolo,m;
      no *esq,*dr;
    };
    void noraiz(no* &raiz)
    {
        raiz=NULL;
    }
    void insere(no* &raiz, int item)
    {
        if(raiz==NULL)
        {
            raiz=(no*) malloc(sizeof(no));
            raiz->simbolo=item;
            raiz->contador=1;
            raiz->dr=raiz->esq=NULL;
            raiz->m=m;
            simbol[raiz->m]=item;
            m++;
        }
        else if(item==raiz->simbolo)
            raiz->contador=raiz->contador+1;
        else if(item>raiz->simbolo)
            insere(raiz->dr,item);
        else if(item<raiz->simbolo)
            insere(raiz->esq,item);
         }

    void grava_arvore (no* raiz)
    {
        if(raiz!=NULL)
        {


            grava_arvore(raiz->esq);
            fprintf(arquivo,"%c",simbol[raiz->m]);
            grava_arvore(raiz->dr);

        }

    }
        void programa()
    {

            char g[5],c;
            no* raiz;
            noraiz(raiz);
        arquivo2=fopen("imagem1.pgm","r");
        fseek(arquivo2,38,SEEK_SET);
       while((c=fgetc(arquivo2))!=EOF)
        {
                g[n]=c;
         if(g[n]==' ')
         {
             insere(raiz,(atoi(g)));
             n=0;
             spc++;
         }
         else n++;
        }
        arquivo=fopen("teste.txt","w");
        grava_arvore(raiz);
        fprintf(arquivo,"%d",EOF);
    }

int main()
{
    int t;
    programa();
    fclose(arquivo);
    arquivo=fopen("teste.txt","r");

    while((t=fgetc(arquivo))!=-1)
    {
        printf(" %c",t);
    }
    return 0;
}

Quando chega no 26 ele para. Ele não passa do 26 se eu der fseek() e pular o 26 ele continua tranquilament. como isso?

Link para o comentário
Compartilhar em outros sites

  • 0
char g[5],c;
no* raiz;
noraiz(raiz);
arquivo2=fopen("imagem1.pgm","r");
fseek(arquivo2,38,SEEK_SET);
while((c=fgetc(arquivo2))!=EOF)
{
g[n]=c;
if(g[n]==' ')
{
insere(raiz,(atoi(g)));
n=0;
spc++;
}
else n++;
}

A função atoi() do C recebe como parâmetro uma cadeia de char que termine com caracter nulo (\0). você precisa colocar esse caracter no final da sua variável antes de chamar a função. Sem isso, o resultado é imprevisível.

Outra coisa, pelo tamaho do seu array, se existir uma cadeia de caracteres com mais de 6 chars antes do próximo espaço no arquivo imagem1.pgm, o resultado também será imprevisível, porque aí começa a escrever em memória não reservada até o próximo espaço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...