Probleme d'ouverture de fichier en C

mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006 - 16 juin 2006 à 10:25
mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006 - 16 juin 2006 à 12:54
Bonjour a tous voila mon probleme: Comme vu dans un message precedent j'effectue un mise a jour de mon fichier de la maniere suivante:
->ouverture du fichier a mettre a jour
fopen(ancien fichier)
->ouverture d'un fichier tampon
fopen(fichier temp)
->copie des ligne valide d'un fichier a l'autre
->fermeture des deux fichiers
fclose(ancien fichier)
fclose(fichier temp)
->je renome fichier temp en ancien fichier
rename(fichier temp,ancien fichier)
-> Mon ancien fichier est maintenant a jour...

Ok tout ca marche bien mais au bout de 195 boucle le programme plante car il n'arrive plus a ouvrir ancien fichier!! Y-a t-il quelque chose que j'ai oublie? quelqu'un connait il la soluce?
Merci beaucoup

6 réponses

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
16 juin 2006 à 10:42
Salut,

C'est sous Linux n'est-ce pas ?

et est-ce que cela plante tout le temps au bout de exactement 195 boucles ?

TuRn3r
0
mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
16 juin 2006 à 10:47
Oui exactement sous linux et chaque fois au bout de 195 boucles a la 196eme exactement...
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
16 juin 2006 à 10:57
Essaye d'inserer des

printf("1");

printf("2");

printf("3");


apres chaque fopen ou fclose ou rename ... et regarde le dernier
chiffre affiché, tu sauras alors à quel endroit ca plante (c'est mon
debugger perso ;D), mais si tu veux mon avis, je pense que ca vient
d'ailleurs dans ton code.

Essaye deja de faire le test que je viens de te dire et regarde d'ou vient le plantage.

Tiens moi au courant.

TuRn3r
0
mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
16 juin 2006 à 11:01
Justement c'est ce que je fais
FILE *ft=NULL;

while( ft == NULL )
 { ft = fopen( "temp.txt", "a");
 usleep(1000); 
 }

En fait il me fait cette boucle 195fois et a la 196 eme il reste bloque dedans ft=NULL impossible d'ouvrir ou plutot de creer temp.txt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
16 juin 2006 à 11:52
Essaye:

FILE* ft=fopen( "temp.txt", "a");
if (ft==NULL)
    perror("fopen");

Non seulement c'est plus propre, mais en plus tu auras une indication sur l'erreur.
Par contre tu peut faire voir le code entier de la fonction ou il y a ce bout de code ?

TuRn3r
0
mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
16 juin 2006 à 12:54
En fait j'ai utiliser ce bout de prog pour essayer une autre solution , en fait au depart je faisais comme ca:

if ((ft=fopen("temp.txt","w"))==NULL)       // Open temp Logfile
  {
   printf("OPEN ERROR temp.txt \n");
   exit(1);
  }
Et pour ce qui est de la fonction en entier elle fait  plus de 500 lignes...
Mais j'ai un ami qui a eu exactement le meme probleme (apres 195 cycle) mais il ne se souvient pas comment il a resolu le probleme....
Je vais essayer ton code au moins j'aurais le type d'erreur.
Merci de ton aide et si tu trouve la soluce n'hesite pas!!
0
Rejoignez-nous