Slt tout le monde j'ai besoin d'aide SVP

siwww -  
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un fichier text base de donnée contient:

marc;31;médecin
paul;21;plombier

et je veux charger c'est infos dans une liste chaînée sachant que ma structure s'appelle prof,
est ce que je peut écrire comme ça pour récupérer mes infos: (aux est de type prof)
fscanf(fichier,"%s;%d;%s\n",aux->nom,&aux->age;aux->profession);


je sais que ça fonctionne pour les entiers mais pour les chaines je suis pas sure en tout cas ça n'a pas marché et je veux que qlq1 me donne une soluce si c'est possible .
Mercii
A voir également:

1 réponse

Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Salut !

Je n'ai jamais aimé les fonctions de lecture de fichier qui ne sont pas indispensables. Je te conseille donc te récupérer le résultat ligne par ligne (fgets), et à chaque ligne, de la traiter caractère par caractère. Tu fais une boucle, si le caractère actuel est ';', alors tu augmentes une variable qui correspondra (grâce à un switch) à une case d'un tableau.

Tu vois ce que je veux dire ? Si non, dès que je retrouve le code qui fait presque la même chose, je te le passe pour que tu puisses en prendre exemple.

Tu connais la notion des caractères en C ou C++ ?

Bye ;)
0
siwww
 
oui un peu !!
bein j'ai cette fonction:

char** decouper( char* chaine, char c ) //fonction qui permet de séparer les informations d'un professionnel
{
char** tmp;
int curseur = 0;

tmp=(char**)malloc(50*sizeof(char*));
tmp[curseur++] = chaine;
while( *chaine )
{
if ( *chaine == c )
{
*chaine = '\0';
tmp[curseur++] = chaine+1;
}
++chaine;
}
tmp[ curseur ] = 0;
return tmp;
}

ça marche que pour 2 lignes et puis ça beug
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
tmp[curseur++] = chaine+1;
Remplace par "curseur++; tmp[curseur]"... Et chaine+1 ne veut rien dire ! Logiquement ton compilateur bloque.
Aussi, je n'ai jamais vu deux étoiles pour un char*; Essaie sans. De plus, dans mon code je ne m'étais pas cassé avec les malloc...
Mon code ressemblais plus à ca :
char chaine [30]; 
int i; 
for(int i=0; chaine[i] != '\0'; i++){ // Tant qu'on n'arrive pas à le fin de chaine 
// Ici on trie le char (ou int mais pas char* ni char**) 
if(chaine[i] == ';'){ 
indexVariable++; 
// Et on insère dans tableau[indexVariable] le caractère. LE tableau donnera finalement une chaine. 
} 
}

Ici c'était un exemple qui ne fait rien, quand je retouverai le code ou bien que je serai un peu plus réveillé je te le passerai ;)
0
siwww
 
merci bp bilow j'ai réessayé avec les fscanf et ça a marché c'est magique c plus simple .
merci 1000 fois pour ton aide :)
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
De rien :)
0