Accueil > Forum > > > > J'arrive pas à débuger ceci
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
|
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
|
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
|
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
|
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
|
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; > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
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
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|