begin process at 2012 05 29 08:22:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Erreur debuggage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur debuggage

mercredi 15 janvier 2003 à 20:52:41 | Erreur debuggage

GyZmO

Voilà mon problème, je suis débutant en C alors veuillez pardonner les fautes de voc que je pourrais faire :)
Don, en fait, j'ai créé une fonction sensée récuperer des données dans un fichier, je compile et tout se passe pour le mieux du monde mais lors de l'exécution ça plante. Je lance donc un débogage et je me rend compte que le prog arrive pas à sortir de ma fonction... il me renvoie une erreur 0xC0000005 avec des commentaires... je sais pas pourquoi, il me semble pourtant que mes pointeurs sont correctement utilisés mais bon...
Voilà la source :

static void configPin (char dir[], struct sPin tPin [])

{
char temp [10], *end;
int i, l;

//Ouverture du fichier en lecture seule
fich=fopen(dir, "r");

//On se "cale" au début de la définition des pins
do
{
fscanf(fich,"%s", temp);
}while (strcmp(temp, "PINS")!=0);

//On stocke les informations relatives aux pins dans le tableau
i=0;
fscanf(fich,"%s", temp);
do
{
//Calcul de la longueur de chaine jusqu'aux :
l=strcspn (temp, ":");
strncpy(tPin[i].nom, temp, l);
//Extraction du numero de pin et écriture dans la structure.
tPin[i].num=(int)strtod (temp+l+1, &end);
fscanf(fich,"%s", temp);
}while (strcmp(temp, "*")!=0);

fclose (fich);
}

Merci d'avance à l'aide que vous pourrez m'apporter...

jeudi 16 janvier 2003 à 19:23:16 | Re : Erreur debuggage

trinitacs





-------------------------------
Réponse au message :
Le problème viens de ta méthode de lecture. En effet tu lui dis de lire avec le format %s. Personellement je ne lis jamais les données de cette manière (avec la sortie formatée style %type). Donc je ne peux pas t'assurer que ce soit l'erreur. D'autant plus que tu ne souligne pas l'endroit où ça plante.
Je te propose donc une autres fonction pour lire:

fread( &temp, sizeof( temp ), 1, fichierPtr );

Le premier arg est la raviable qui recevra la donée.
Le second la taille à lire ne octects
Le troisième le nombre de fois
Le dernier le pointeur de fichier

Mais avant d'utiliser cela je te conseil de l'ouvrir en mode binaire: "rb" au lieu de "r"

Je trouve que lire des donnée avec fread est beaucoup plus efficace. Il y a l'inverse qui fonctionne de la même manière, elle s'appelle fwrite.
-------------------------------

> Voilà mon problème, je suis débutant en C alors veuillez pardonner les fautes de voc que je pourrais faire :)
> Don, en fait, j'ai créé une fonction sensée récuperer des données dans un fichier, je compile et tout se passe pour le mieux du monde mais lors de l'exécution ça plante. Je lance donc un débogage et je me rend compte que le prog arrive pas à sortir de ma fonction... il me renvoie une erreur 0xC0000005 avec des commentaires... je sais pas pourquoi, il me semble pourtant que mes pointeurs sont correctement utilisés mais bon...
> Voilà la source :
>
> static void configPin (char dir[], struct sPin tPin [])
>
> {
> char temp [10], *end;
> int i, l;
>
> //Ouverture du fichier en lecture seule
> fich=fopen(dir, "r");
>
> //On se "cale" au début de la définition des pins
> do
> {
> fscanf(fich,"%s", temp);
> }while (strcmp(temp, "PINS")!=0);
>
> //On stocke les informations relatives aux pins dans le tableau
> i=0;
> fscanf(fich,"%s", temp);
> do
> {
> //Calcul de la longueur de chaine jusqu'aux :
> l=strcspn (temp, ":");
> strncpy(tPin[i].nom, temp, l);
> //Extraction du numero de pin et écriture dans la structure.
> tPin[i].num=(int)strtod (temp+l+1, &end);
> fscanf(fich,"%s", temp);
> }while (strcmp(temp, "*")!=0);
>
> fclose (fich);
> }
>
> Merci d'avance à l'aide que vous pourrez m'apporter...
>
>
jeudi 16 janvier 2003 à 19:57:49 | Re : Erreur debuggage

GyZmO

Merci beaucoup...
J'ai réussi à rêgler cette erreur autrement mais de façon un peu magique et mystérieuse, j'ai juste augmenté la taille de ma chaine temp pour la mettre à 20 et hop ça marche....




-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> Le problème viens de ta méthode de lecture. En effet tu lui dis de lire avec le format %s. Personellement je ne lis jamais les données de cette manière (avec la sortie formatée style %type). Donc je ne peux pas t'assurer que ce soit l'erreur. D'autant plus que tu ne souligne pas l'endroit où ça plante.
> Je te propose donc une autres fonction pour lire:
>
> fread( &temp, sizeof( temp ), 1, fichierPtr );
>
> Le premier arg est la raviable qui recevra la donée.
> Le second la taille à lire ne octects
> Le troisième le nombre de fois
> Le dernier le pointeur de fichier
>
> Mais avant d'utiliser cela je te conseil de l'ouvrir en mode binaire: "rb" au lieu de "r"
>
> Je trouve que lire des donnée avec fread est beaucoup plus efficace. Il y a l'inverse qui fonctionne de la même manière, elle s'appelle fwrite.
> -------------------------------
>
> > Voilà mon problème, je suis débutant en C alors veuillez pardonner les fautes de voc que je pourrais faire :)
> > Don, en fait, j'ai créé une fonction sensée récuperer des données dans un fichier, je compile et tout se passe pour le mieux du monde mais lors de l'exécution ça plante. Je lance donc un débogage et je me rend compte que le prog arrive pas à sortir de ma fonction... il me renvoie une erreur 0xC0000005 avec des commentaires... je sais pas pourquoi, il me semble pourtant que mes pointeurs sont correctement utilisés mais bon...
> > Voilà la source :
> >
> > static void configPin (char dir[], struct sPin tPin [])
> >
> > {
> > char temp [10], *end;
> > int i, l;
> >
> > //Ouverture du fichier en lecture seule
> > fich=fopen(dir, "r");
> >
> > //On se "cale" au début de la définition des pins
> > do
> > {
> > fscanf(fich,"%s", temp);
> > }while (strcmp(temp, "PINS")!=0);
> >
> > //On stocke les informations relatives aux pins dans le tableau
> > i=0;
> > fscanf(fich,"%s", temp);
> > do
> > {
> > //Calcul de la longueur de chaine jusqu'aux :
> > l=strcspn (temp, ":");
> > strncpy(tPin[i].nom, temp, l);
> > //Extraction du numero de pin et écriture dans la structure.
> > tPin[i].num=(int)strtod (temp+l+1, &end);
> > fscanf(fich,"%s", temp);
> > }while (strcmp(temp, "*")!=0);
> >
> > fclose (fich);
> > }
> >
> > Merci d'avance à l'aide que vous pourrez m'apporter...
> >
> >
>


Cette discussion est classée dans : erreur, temp, fich, pins, tpin


Répondre à ce message

Sujets en rapport avec ce message

Problème "Ping" en c [ par mohken ] Bonjour à tous, Jeune développeur en LabWindows ( environnement C ), je souhaite effectuer un "ping" mais une erreur lors de mon exécution sur "fopen Erreur que j'ai pas compri [ par belgacemm ] Salut,Ceci est un extrait de mon programme de gérance de contacts.J'ai un fichier dans lequel j'ai entré 4 contatcs .Lorsque j'essaye de l'ouvrir il y Ajout de '\r\n' dans un fichier [ par malik7934 ] Hello,J'ai un serveur qui ouvre un texte, le lit et l'envoi à un client qui sauve ce qu'il reçoit dans un fichier. En d'autres termes, fichier_src.txt envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc durée du ping [ par yann66 ] Bonjour à tous,je ne suis pas developpeur, simplement amateur, et j'ai une question à laqu'elle je ne trouve pas de réponse sur internet..Je suis conn Erreur de compilation étonnante [ par aujeanfr ] Voici la fonction que je crée :Déclaration :public:int traitement_bmp(CBitmap accessoire, CString CheminImages, problème socket sous windows [ par kod32 ] Voici mon code : (winsock2.h)-----------------------------int main(){ /* inialisation */ WSADATA wsa; WSAStartup(MAKEWORD(2,0), &wsa); /* sscanf(...) [ par nemmezis ] Salut tout le monde,J'ai un problème avec l'utilisation de la fonction sscanf(...).En fait, je souhaite récupérer dans la chaîne de caractères les heu Problème avec l'erreur r6002 [ par Suisse00 ] Salut ! Info R6002 : http://msdn.microsoft.com/library/FRE/vccore/html/R6002.aspVoila sais que le serveur m'envoie une chaine comprenant des virgule, TDBNavigator sous C++ borland [ par tanguy_laverdure ] Bonjour, Je pose un TDBNavigator (barre permettant de naviguer dans les fichier d'une BD) dans une fiche. Lorsque je lance la compilation, j'obtien le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales