Jump to content

Dúvida em C


mandelacruz

Recommended Posts

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

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

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

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

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...