begin process at 2012 05 28 09:17:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

J'arrive pas à débuger ceci


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

J'arrive pas à débuger ceci

samedi 9 août 2003 à 15:35:56 | J'arrive pas à débuger ceci

guiguikun

Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
Je ne peux pas utiliser strstr() car le buffer comprend des "\0".

Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()


bool is_flag_present(char *buffer, unsigned long buffer_size)
{
char *ptr = buffer;
for (unsigned long i = 0 ; i < buffer_size ; i++) {
if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
ptr++;
}
return 0;
}
samedi 9 août 2003 à 16:02:34 | Re : J'arrive pas à débuger ceci

BruNews

Administrateur CodeS-SourceS
et tu es certain que le dernier octet du buffer est un zero ?
BruNews, ciao...


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

> Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
>
> Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
>
>
> bool is_flag_present(char *buffer, unsigned long buffer_size)
> {
> char *ptr = buffer;
> for (unsigned long i = 0 ; i < buffer_size ; i++) {
> if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> ptr++;
> }
> return 0;
> }
>
samedi 9 août 2003 à 16:04:32 | Re : J'arrive pas à débuger ceci

guiguikun

Oui j'en suis sur.
En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...


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

> et tu es certain que le dernier octet du buffer est un zero ?
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> >
> > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> >
> >
> > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > {
> > char *ptr = buffer;
> > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > ptr++;
> > }
> > return 0;
> > }
> >
>
samedi 9 août 2003 à 16:11:31 | Re : J'arrive pas à débuger ceci

guiguikun

Encore une faute de n00b ! J'ai honte :)

Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)

Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.

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

> Oui j'en suis sur.
> En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > et tu es certain que le dernier octet du buffer est un zero ?
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > >
> > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > >
> > >
> > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > {
> > > char *ptr = buffer;
> > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > ptr++;
> > > }
> > > return 0;
> > > }
> > >
> >
>
samedi 9 août 2003 à 16:14:25 | Re : J'arrive pas à débuger ceci

BruNews

Administrateur CodeS-SourceS
Qu'il finisse par un zero autorise seulement l'emploi de strncmp.
Maintenant:
for (unsigned long i = 0 ; i < buffer_size ; i++) ???
BruNews, ciao...


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

> Oui j'en suis sur.
> En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > et tu es certain que le dernier octet du buffer est un zero ?
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > >
> > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > >
> > >
> > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > {
> > > char *ptr = buffer;
> > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > ptr++;
> > > }
> > > return 0;
> > > }
> > >
> >
>
samedi 9 août 2003 à 16:16:37 | Re : J'arrive pas à débuger ceci

BruNews

Administrateur CodeS-SourceS
m'etonnerait que lui evite de planter.
BruNews, ciao...


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

> Encore une faute de n00b ! J'ai honte :)
>
> Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)
>
> Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Oui j'en suis sur.
> > En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > et tu es certain que le dernier octet du buffer est un zero ?
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > > >
> > > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > > >
> > > >
> > > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > > {
> > > > char *ptr = buffer;
> > > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > > ptr++;
> > > > }
> > > > return 0;
> > > > }
> > > >
> > >
> >
>
samedi 9 août 2003 à 16:18:23 | Re : J'arrive pas à débuger ceci

guiguikun

Si puisque le buffer n'est rien d'autre que le return d'une fonction qui met un fichier dans un buffer.
Cette fonction return NULL si elle n'a pas réussi a ouvrir le fichier. c'est ce "NULL" qui posait problème



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

> m'etonnerait que lui evite de planter.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Encore une faute de n00b ! J'ai honte :)
> >
> > Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)
> >
> > Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Oui j'en suis sur.
> > > En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > et tu es certain que le dernier octet du buffer est un zero ?
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > > > >
> > > > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > > > >
> > > > >
> > > > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > > > {
> > > > > char *ptr = buffer;
> > > > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > > > ptr++;
> > > > > }
> > > > > return 0;
> > > > > }
> > > > >
> > > >
> > >
> >
>
samedi 9 août 2003 à 16:26:13 | Re : J'arrive pas à débuger ceci

BruNews

Administrateur CodeS-SourceS
exact, j'avais mal lu la boucle for.
Alors une fois bien relue, tu peux diminuer son temps de traitement, reflechis chouia.
BruNews, ciao...


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

> Si puisque le buffer n'est rien d'autre que le return d'une fonction qui met un fichier dans un buffer.
> Cette fonction return NULL si elle n'a pas réussi a ouvrir le fichier. c'est ce "NULL" qui posait problème
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > m'etonnerait que lui evite de planter.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Encore une faute de n00b ! J'ai honte :)
> > >
> > > Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)
> > >
> > > Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Oui j'en suis sur.
> > > > En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > et tu es certain que le dernier octet du buffer est un zero ?
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > > > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > > > > >
> > > > > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > > > > >
> > > > > >
> > > > > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > > > > {
> > > > > > char *ptr = buffer;
> > > > > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > > > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > > > > ptr++;
> > > > > > }
> > > > > > return 0;
> > > > > > }
> > > > > >
> > > > >
> > > >
> > >
> >
>
samedi 9 août 2003 à 16:28:56 | Re : J'arrive pas à débuger ceci

guiguikun

en remplacant
if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
par
if ( !strncmp(ptr,flag,taille_flag) ) return 1;
taille_flag etant strlen(flag);

??




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

> exact, j'avais mal lu la boucle for.
> Alors une fois bien relue, tu peux diminuer son temps de traitement, reflechis chouia.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Si puisque le buffer n'est rien d'autre que le return d'une fonction qui met un fichier dans un buffer.
> > Cette fonction return NULL si elle n'a pas réussi a ouvrir le fichier. c'est ce "NULL" qui posait problème
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > m'etonnerait que lui evite de planter.
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Encore une faute de n00b ! J'ai honte :)
> > > >
> > > > Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)
> > > >
> > > > Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Oui j'en suis sur.
> > > > > En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > et tu es certain que le dernier octet du buffer est un zero ?
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > > > > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > > > > > >
> > > > > > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > > > > > >
> > > > > > >
> > > > > > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > > > > > {
> > > > > > > char *ptr = buffer;
> > > > > > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > > > > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > > > > > ptr++;
> > > > > > > }
> > > > > > > return 0;
> > > > > > > }
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
samedi 9 août 2003 à 16:34:31 | Re : J'arrive pas à débuger ceci

BruNews

Administrateur CodeS-SourceS
1er point mais je pense que le compilo l'aurait resolu pour toi, ceci dit ne jamais penser que le compilo est intelligent.
Autre truc, regarde bien ta for et vois pourquoi tu peux reduire ses tours.
BruNews, ciao...


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

> en remplacant
> if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> par
> if ( !strncmp(ptr,flag,taille_flag) ) return 1;
> taille_flag etant strlen(flag);
>
> ??
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > exact, j'avais mal lu la boucle for.
> > Alors une fois bien relue, tu peux diminuer son temps de traitement, reflechis chouia.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Si puisque le buffer n'est rien d'autre que le return d'une fonction qui met un fichier dans un buffer.
> > > Cette fonction return NULL si elle n'a pas réussi a ouvrir le fichier. c'est ce "NULL" qui posait problème
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > m'etonnerait que lui evite de planter.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Encore une faute de n00b ! J'ai honte :)
> > > > >
> > > > > Le problème venait d'une autre fonction qui envoyait à celle-ci un buffer vide :)
> > > > >
> > > > > Il m'a suffit d'ajouter un if (!buffer) au début de cette fonction pour contourner le problème.
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Oui j'en suis sur.
> > > > > > En plus pour débugger j'affichais chaque position de ptr a chaque fois que je l'incrémentais et ca plantait avant la fin du buffer...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > et tu es certain que le dernier octet du buffer est un zero ?
> > > > > > > BruNews, ciao...
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Cette fonction parse un buffer. Elle renvoit true si le flag est présent et false s'il ne l'est pas.
> > > > > > > > Je ne peux pas utiliser strstr() car le buffer comprend des "\0".
> > > > > > > >
> > > > > > > > Lors du premier appel de cette fonction tout se déroule normalement, mais au 2eme appel, le programme plante à la ligne strncmp()
> > > > > > > >
> > > > > > > >
> > > > > > > > bool is_flag_present(char *buffer, unsigned long buffer_size)
> > > > > > > > {
> > > > > > > > char *ptr = buffer;
> > > > > > > > for (unsigned long i = 0 ; i < buffer_size ; i++) {
> > > > > > > > if ( !strncmp(ptr,flag,strlen(flag)) ) return 1;
> > > > > > > > ptr++;
> > > > > > > > }
> > > > > > > > return 0;
> > > > > > > > }
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

1 2

Cette discussion est classée dans : buffer, arrive, ptr, flag, débuger


Répondre à ce message

Sujets en rapport avec ce message

PB avec libpng : png en niveau de gris sur 16 bits [ par ReDcRoWn ] Bonjour à tous,A l'aide de la libpng je cherche à écrire des images au format PNG en niveau de gris sur 16 bits (pas de transparence).1/ Je voudrais t Synchroniser l'affichage de deux TMemo [ par websinh ] Bonjour tout le monde,J'utilise la version 6 de c++ builder. Je dois réaliser une fonction qui permet de synchroniser l'affichage d'une TMemo sur un a Requetes serveur cs 1.6 [ par Mini92 ] En fait, j'essaye d'envoyer des requêtes sur mon serveur cs mais je n'obtiens aucun retour.Voilà le code si quelqu'un peu m'aider svp#include #include Z-Buffer fait des siennes [ par bizzard4 ] J'ai un problème avec mon Z-Buffer. Il affiche très bien la partie droite et le dessous de mes cubes. Mais quand il est temps d'afficher le côté gauch Besoin d'aide pour résoudre une erreur C2664 [ par jalmjj ] Bonjour, je suis nouveau ici et débutant en C++ (je suis étudiant en IUT Génie Electrique et Informatique Industrielle et nous n'avons appris que les pour effacer un cdrom [ par mniajnaa ] salut tout le monde j'ai une fonction qui efface les cdrom avec l'api DeviceIoControl . malgré un probleme  qui entrave le fonctionnement normal interface graphique GTK [ par ifitep84 ] bonjour à tous j'ai un ptit souci avec mon programme .en somme j'ai construit une interface graphique sous glade qui utilise GTK . Dans mon interfac [Win32] Problème Static / Scrollbar [ par Iphelias ] Bonjour,Voila j'ai un petit Soucis en fait dans mon application win32, j'ai une scrollbar et j'aimerais mettre à jour un champ correspondant à la vale Besoin de précisions. [ par deck_bsd ] Yop à tous,Voila je cherche à récupérer l'était d'un périphérique sur le pc. J'utilise pour cela SetupDiGetDeviceRegistryProperty avec le flag SPDRP_C j'arrive pas a l'expliquer en un mot... [ par Titof301 ] Bonjour a tous, j'ai une question probablement bête mais bon (  ). Est-il possible d'utiliser le contenu d'une variable int par exemple à l'intérieur


Nos sponsors


Sondage...

Comparez les prix

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 : 2,418 sec (4)

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