mandelacruz Postado Março 24, 2020 em 01:55 Compartilhar Postado Março 24, 2020 em 01:55 Duvida abaixo: Link para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 24, 2020 em 02:21 Autor Compartilhar Postado Março 24, 2020 em 02:21 24 minutes ago, mandelacruz said: Olá, estou estudando programação em C e me surgiu uma dúvida ao tentar ler um arquivo binário. #include <stdio.h> #include <stdlib.h> typedef struct { long int numero; char nome[100]; }addr; addr teste = {70707070, "testando"}; void main(){ FILE *p; p = fopen("teste", "wb"); if(p == NULL){ printf("ERROO"); exit(1); } fwrite(&teste,sizeof(addr),1,p); fclose(p); } Nesse exemplo,criei um arquivo binário e passei o conteúdo dessa struct para ele. Minha duvida é se existe alguma maneira de ler apenas um campo dessa struct no arquivo binário, por exemplo, só o campo numero? Espero que seja respondido kkk, obrigado!!! Link para o comentário Compartilhar em outros sites More sharing options...
Marioh Postado Março 24, 2020 em 02:43 Compartilhar Postado Março 24, 2020 em 02:43 Tu pode tentar com o fscanf. Link para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 24, 2020 em 02:44 Autor Compartilhar Postado Março 24, 2020 em 02:44 Já tentei sem sucesso ? Link para o comentário Compartilhar em outros sites More sharing options...
Marioh Postado Março 24, 2020 em 04:13 Compartilhar Postado Março 24, 2020 em 04:13 Entao dei um "echo "70707070testando > teste" e o codigo fica assim: #include <stdio.h> #include <stdlib.h> typedef struct { int numero; char nome[100]; }addr; // coloquei um valorzinho default pra debugar addr teste = {0, " "}; int main(void){ FILE *p; p = fopen("teste", "r"); if(p == NULL){ printf("ERROO"); exit(1); } // parenteses opcionais fscanf(p,"%d%s" , &(teste.numero), &teste.nome); printf("%u\n", teste.numero); puts(teste.nome); fclose(p); return 0; } Espero que ajude Link para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 24, 2020 em 04:31 Autor Compartilhar Postado Março 24, 2020 em 04:31 Não man, o que você fez foi ler o conteúdo de um arquivo texto. A minha duvida é se é possivel fazer a leitura de apenas um campo de uma struct que está em um arquivo BINÁRIO. Mas obrigado por tentar ajudar. Link para o comentário Compartilhar em outros sites More sharing options...
Marioh Postado Março 24, 2020 em 04:42 Compartilhar Postado Março 24, 2020 em 04:42 Pois e percebi isso assim que postei #include <stdio.h> #include <stdlib.h> typedef struct { long int numero; char nome[100]; }addr; void main(){ addr teste = {0, "default"}; FILE *p; p = fopen("teste", "rb"); if(p == NULL){ printf("ERROO"); exit(1); } int i = fread( &teste, sizeof(addr), 1, p); printf("read: %lu\n", teste.numero); puts(teste.nome); printf("%zu\n", sizeof(long int) ); fclose(p); } espero que ajude. Link para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 24, 2020 em 13:09 Autor Compartilhar Postado Março 24, 2020 em 13:09 pior que consegui de uma forma parecida com essa sua '-'. pior ainda que eu tinha testado essa forma ontem e nao tava dando certo, por isso vim perguntar aqui, mas acho que por engano devo ter aberto o arquivo no modo "wb" sendo que queria ler, dai tava dando um numero aleatório... Mas enfim o importante é aprender uahsuahsua. #include <stdio.h> #include <stdlib.h> typedef struct{ long int numero; }addr; addr teste; void main(){ FILE *p = fopen("teste", "rb"); if(p == NULL){ printf("ERRO"); exit(1); } fread(&teste,sizeof(addr),1,p); fclose(p); printf("Numero: %ld\n", teste.numero); } Cara eu juro que fiz dessa forma ontem e nao estava pegando,eu devia estar muito cansado ja de tanto ler. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.