Thiago lablonsk Postado Abril 4, 2015 Denunciar Share Postado Abril 4, 2015 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Abril 4, 2015 Autor Denunciar Share Postado Abril 4, 2015 A carinha ali é o 'b' rs. Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Abril 4, 2015 Autor Denunciar Share Postado Abril 4, 2015 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LazaroBinda Postado Abril 10, 2015 Denunciar Share Postado Abril 10, 2015 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Abril 10, 2015 Autor Denunciar Share Postado Abril 10, 2015 LazaroBinda, Muito obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiago lablonsk
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
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.