Probleme recuperation de données c

Bonjour,
Un nouveau problème se présente a moi.
Lors de la récupération des donnée dans mon fichier data, les données ne sont pas correctement emmagasiner dans la structure profil.
save.data
Hadrien 12313215 
Laurent 12321321 
Helory 1231231 

ma fonction:
int load_rep(void)
{
	int i;
	signed char n_name[MAX_NAME_CHAR], n_tel[MAX_TEL_CHAR];
	FILE *save = fopen("save.data", "r");
	if(save==NULL)
		return 1;
	int size = get_file_size(save);
	myRep = realloc(myRep, size*sizeof(pers));
	printf("size : %d\n", size);
	for(i=1;i<size;i++)
		rep_size++;
	printf("Fichier data trouvée!\n");
	printf("Lancement de la récupération des données\n");
	for(i=0;i<rep_size;i++)
	{
		fscanf(save, "%s %d ", myRep[i].name, myRep[i].tel);
		printf("NAME : %s | TEL : %s\n", myRep[i].name, myRep[i].tel);
	}
	printf("Données récupérer avec succée\n");
	fclose(save);
	return 0;
}

print:
size : 3
Fichier data trouv├®e!
Lancement de la r├®cup├®ration des donn├®es
NAME :  | TEL :
NAME :  | TEL :
NAME : u | TEL : d
Donn├®es r├®cup├®rer avec succ├®e

J'ai beaux tester de nombreuses methode il semble que le fscanf ne marche pas!
Merci d'avance a ceux qui souhaiterai m'aider :).

Configuration: Windows / Chrome 97.0.4692.99

2 réponses

  1. Contributeur
    bonjour,
    j'ai beau regarder partout, j'ai l'impression qu'il manque une partie de ton programme.
    0
    1. En effet il manque une tres grosse partie de mon programme que je n'ai pas mis pour ne pas surcharfer le post.
      voici la version dans sa globalité
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <unistd.h>
      #include <stdbool.h>
      
      #define MAX_NAME_CHAR 20
      #define MAX_TEL_CHAR 9
      #define REP_SIZE 3
      
      typedef struct person
      {
      	char name[MAX_NAME_CHAR];
      	char tel[MAX_TEL_CHAR];
      }pers;
      
      void input_person(pers *sp);
      void input_rep(void);
      void print_rep(void);
      int find_in_rep(void);
      void save_rep(void);
      int load_rep(void);
      int get_file_size(FILE *file);
      
      void add_profil(void); // fonction ultime
      
      pers *myRep;
      size_t rep_size=1;
      
      int main(int argc, char *argv[])
      {
      	bool load = false;
      	int choose, s1, s2, size;
      	myRep = calloc(rep_size, sizeof(pers));
      	FILE *tryfindfile = fopen("save.data", "r");
      	if(tryfindfile==NULL)
      	{
      		printf("Echec de la recherche du fichier data\n");
      		input_rep();
      	}
      	else
      		load = true;
      	if(load==true)
      		load_rep();
      	print_rep();
      	do
      	{
      		do
      		{
      			printf("\nMenu:\n");
      			printf("1-afficher le contenu du répertoire\n");
      			printf("2-chercher le numéro d'une personne\n");
      			printf("3-sauvegarder le répértoire\n");
      			printf("4-ajouter un profil\n");
      			printf("5-quitter le programme\n");
      			printf("Votre choix : ");
      			scanf("%d", &choose);
      		}
      		while(choose < 1 || choose > 5);
      		switch(choose)
      		{
      			case 1:
      				print_rep();
      				break;
      			case 2:
      				if(find_in_rep()==0)
      					printf("ERREUR : NOM INTROUVABLE\n");
      				break;
      			case 3:
      				save_rep();
      				break;
      			case 4:
      				add_profil();
      				break;
      			default: break;
      		}
      	}
      	while(choose!=5);
      	save_rep();
      	return 1;
      }
      
      void input_person(pers *sp)
      {
      	printf("Name : ");
      	scanf("%s", sp->name);
      	printf("Tel : ");
      	scanf("%s", sp->tel);
      	return;
      }
      
      void input_rep(void)
      {
      	int i;
      	printf("Veuillez saisir votre premier contact :\n");
      	input_person(&myRep[0]);
      	printf("Rep saisit avec succe!\n");
      	return;
      }
      
      void print_rep(void)
      {
      	printf("Lancement de l'affichage du rep\n");
      	int i;
      	for(i=0;i<rep_size;i++)
      	{
      		printf("-------------------------------------\n");
      		printf("Name : %s\n", myRep[i].name);
      		printf("Tel : %s\n", myRep[i].tel);
      		printf("-------------------------------------\n");
      	}
      	printf("Fin de l'affichage du repertoire\n");
      	return;
      }
      
      int find_in_rep(void)
      {
      	int i;
      	char name_to_find[MAX_NAME_CHAR];
      	printf("Outil de recherche dans le rep :\n");
      	printf("Entrer un nom :");
      	scanf("%s", name_to_find);
      	printf("\n");
      	for(i=0;i<rep_size;i++)
      	{
      		if(strcmp(name_to_find, myRep[i].name)==0)
      		{
      			printf("Trouvé!\n");
      			printf("Num : %s", myRep[i].tel);
      			return 1;
      		}
      	}
      	return 0;
      }
      
      void save_rep(void)
      {
      	FILE *save = fopen("save.data", "w");
      	int i;
      	for(i=0;i<rep_size;i++)
      	{
      		fputs(myRep[i].name, save);
      		fputc(' ', save);
      		fputs(myRep[i].tel, save);
      		fputc(' ', save);
      		fputc('\n', save);
      		printf("Profil %d enregistrer dans le fichier data.\n", i+1);
      	}
      	fclose(save);
      	return;
      }
      
      int load_rep(void)
      {
      	int i;
      	signed char n_name[MAX_NAME_CHAR], n_tel[MAX_TEL_CHAR];
      	FILE *save = fopen("save.data", "r");
      	if(save==NULL)
      		return 1;
      	int size = get_file_size(save);
      	myRep = realloc(myRep, size*sizeof(pers));
      	printf("size : %d\n", size);
      	for(i=1;i<size;i++)
      		rep_size++;
      	printf("Fichier data trouvée!\n");
      	printf("Lancement de la récupération des données\n");
      	for(i=0;i<rep_size;i++)
      	{
      		fscanf(save, "%s %d ", myRep[i].name, myRep[i].tel);
      		printf("NAME : %s | TEL : %s\n", myRep[i].name, myRep[i].tel);
      	}
      	printf("Données récupérer avec succée\n");
      	fclose(save);
      	return 0;
      }
      
      int get_file_size(FILE *file)
      {
      	int size=0;
      	signed char str[MAX_NAME_CHAR+MAX_TEL_CHAR];
      	while(fgets(str, MAX_NAME_CHAR+MAX_TEL_CHAR-1, file)!=NULL)
      		size++;
      	return size;
      }
      
      void add_profil(void)
      {
      	signed char new_name[MAX_NAME_CHAR];
      	signed char new_tel[MAX_TEL_CHAR];
      	printf("Veuillez entrer le nom du nouveau profil : ");
      	scanf("%s", new_name);
      	printf("Veuillez entrer le tel du nouveau profil : ");
      	scanf("%s", new_tel);
      	myRep = realloc(myRep, (rep_size+1)*sizeof(pers));
      	++rep_size;
      	strcpy(myRep[rep_size-1].name, new_name);
      	strcpy(myRep[rep_size-1].tel, new_tel);
      	print_rep();
      	return;
      }
      

      Merci pour la réponse rapide c'est assez impressionnant le travail que vous effectuer sur se forum
      1