Ce qui va pas dans le code posté (aux questions de droit près):
 
Quand tu fais fputs(chaine,texte); ta position dans le fichier est a la fin de la chaîne écrite. Quand tu fais ensuite fscanf(texte,"%d %d %d %s",&chiffres[0],&chiffres[1],&chiffres[2],prenom); tu fais une lecture après ce que tu viens d'écrire.
Il faut donc avant d'écrire stocker la position dans le fichier, écrire, revenir à la position stockée, et enfin lire ce qu'on vient d'écrire.    
long pos = ftell(texte);  // stockage de la position dans le fichier
fputs(chaine,texte);
....    
fseek(texte, pos, SEEK_SET); // retour à la position stockée
fscanf(texte,"%d %d %d %s",&chiffres[0],&chiffres[1],&chiffres[2],prenom);
 
Notes que quand c'est la première ligne du fichier, on peut simplifier ceci (mais la procédure précédente est la plus générale et la plus utile):
fputs(chaine,texte); // écriture de la première ligne du fichier
....    
rewind(texte); // retour en début de fichier
fscanf(texte,"%d %d %d %s",&chiffres[0],&chiffres[1],&chiffres[2],prenom);
 
Citation :
 
 Dans le programme que j'ai fait donc, ça se passe comme ça :   ouverture du fichier en écriture   on met la chaine dans le fichier   on ferme le fichier   on l'ouvre en lecture seule   fscanf, et là ça marche !
   | 
  
Ça marche parce que tu écris la première ligne, et que quand tu fermes et qu'ensuite tu rouvres le fichier, tu es positionné en début de fichier.
 
A+,
 
Message édité par gilou le 04-06-2011 à 14:36:38
 ---------------
			
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻