Stephworlds
Messages postés16Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention16 avril 2007
-
13 mars 2007 à 10:54
Stephworlds
Messages postés16Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention16 avril 2007
-
15 mars 2007 à 12:30
Salut à tous
Je doit lire des données dans un fichier et écrire ce qui est lu dans un autre fichier. A la compilation ça marche nikel mais quand je la nce le programme :
Exception non gérée à 0x00402ee5 dans projet.exe : 0xC0000005:
Violation d'accès lors de la lecture de l'emplacement 0x00000068.
J'ai décomposé tous le programme et je me suis rendu compte que c'est le fgets qui pose probleme, mais je sais pas pourquoi.
Stephworlds
Messages postés16Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention16 avril 2007 13 mars 2007 à 11:23
ça y est ça marche j'ai changé :
while( fgets(ligne, 255, p_historique) ){ //lire jusqu'au retour ligne
for(index=0;index<=strlen(ligne);index++)
{
fprintf(p_user, "%s\n",ligne[index]);
}
}
par :
for (index = 0; !feof(p_historique); ++index) {
fgets(tab[index], 256, p_historique);
fprintf(p_user, "%s\n",tab[index]);
}
Par contre dans le fichier cible, il y a :
historique.txt historique.txt
historique.txt historique.txt
Ð¥•|
alors que dans le fichier source j'ai :
historique.txt historique.txt
historique.txt historique.txt
Stephworlds
Messages postés16Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention16 avril 2007 13 mars 2007 à 11:53
reponse : pour le saut de ligne c'est qu'il y en a un dans le tableau et un dans le fprintf(p_user, "%s\n",ligne[index]);
et pour le Ð¥?| c'est que le prog lit une ligne apres la derniere j'ai contourné le probleme par :
for (index = 0; !feof(p_historique); ++index) {
fgets(tab[index], 255, p_historique);
}
test=index;
for (index = 0; index<test ; ++index) {
fprintf(p_user, "%s",tab[index]);
}
Par contre j'arrive pas à savoir pourquoi mon premier prog plantait si quelqu'un pouvait m'expliquer.
De plus dans mon programme final il va faloir que je sépare une ligne en plusieurs partie : dans ce cas je veux un historique.txt dans chaque variable.
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 13 mars 2007 à 22:50
Bonsoir,
J'ai juste regarder le code de ton premier exemple :
ligne[index] = un caractere donc dans ton fprintf il ne faut pas mettre %s mais %c
sinon, c'est quoi ce fopen_s et errno_t ?
le prototype de la fonction est de ce style int main(); ou int main(int argc, char** argv); et de plus il doit retourner une valeur donc de type int.
Stephworlds
Messages postés16Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention16 avril 2007 15 mars 2007 à 12:30
Pourtant quand je fait %s ça écrit dans le fichier. Je comprend pas....
Le fopen_s est pour ouvrir et creer le fichier, et errno_t est un type de variable (d'ou il vient? euh? faut demander a microsoft....)
Pour le main je compte faire un programme plus complet ça c'est du camboui pour test donc qu'il me retourne quelquechose ou pas je m'en fiche. Le truc c'est que dans mon programme final il va faloir que je sépare une ligne en plusieurs partie. C'est plutot ça mon gros soucis.
merci de ton aide