mandelacruz Posted March 24, 2020 at 01:55 AM Share Posted March 24, 2020 at 01:55 AM Duvida abaixo: Link to comment Share on other sites More sharing options...
mandelacruz Posted March 24, 2020 at 02:21 AM Author Share Posted March 24, 2020 at 02:21 AM 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 to comment Share on other sites More sharing options...
Marioh Posted March 24, 2020 at 02:43 AM Share Posted March 24, 2020 at 02:43 AM Tu pode tentar com o fscanf. Link to comment Share on other sites More sharing options...
mandelacruz Posted March 24, 2020 at 02:44 AM Author Share Posted March 24, 2020 at 02:44 AM Já tentei sem sucesso ? Link to comment Share on other sites More sharing options...
Marioh Posted March 24, 2020 at 04:13 AM Share Posted March 24, 2020 at 04:13 AM 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 to comment Share on other sites More sharing options...
mandelacruz Posted March 24, 2020 at 04:31 AM Author Share Posted March 24, 2020 at 04:31 AM 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 to comment Share on other sites More sharing options...
Marioh Posted March 24, 2020 at 04:42 AM Share Posted March 24, 2020 at 04:42 AM 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 to comment Share on other sites More sharing options...
mandelacruz Posted March 24, 2020 at 01:09 PM Author Share Posted March 24, 2020 at 01:09 PM 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 to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.