Accueil > Forum > > > > Une erreur de segmentation que je ne comprends pas...
Une erreur de segmentation que je ne comprends pas...
mercredi 31 août 2005 à 07:44:25 |
Une erreur de segmentation que je ne comprends pas...

semifer
|
Voilà, je débute en C, j'ai quelques connaissances dans d'autres langages (surtout php et scripts bash).
Je tourne sous plateforme Linux Debian 3.1 et j'utilise Kdevelop3 en IDE.
Voilà, j'ai un code très simple (pour l'instant) et j'ai une erreur de
segmentation si j'execute le programme sans arguments. Sinon le reste
fonctionne. C'est très basique et tout de suite le code ne sert à rien
mais j'essaye de m'habituer au langage en faisant divers tests pour
saisir les différences de langage. Voici la portion de code je ne
comprends pas. Je voudrais seuleument verifier si il existe au moins un
paramètre. J'ai essayé des tentatives en vain avec une ligne du genre:
if (argc = 0) { mon instruction } else {bla bla bla}...
Le code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "aw_var.h"
int main( int argc, char *argv[])
{
if ( strcmp(argv[1],Param_START)==0)
{
printf ( "%s. \n", Param_START);
}
if ( strcmp(argv[1],Param_STOP)==0)
{
printf ( "%s. \n", Param_STOP);
}
exit( 0);
}
C'est vraiment stupide comme code mais le but est simplement de comprendre...
Que dois je mettre pour qu'il me sorte un message si il n'y a aucun paramètre?
|
|
mercredi 31 août 2005 à 07:58:48 |
Re : Une erreur de segmentation que je ne comprends pas...

semifer
|
J'ai vu ce genre de code trainer mais ca ne marche pas, j'ai toujours "erreur de segmentation" si je n'ai aucun paramètre...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "aw_var.h"
int main(int argc,char *argv[])
{
if (argc<1)
{
printf ("Vous devez passer un paramètre. \n");
exit(0);
}
else
{
if (strcmp(argv[1],Param_START)==0)
{
printf ("%s. \n", Param_START);
}
if (strcmp(argv[1],Param_STOP)==0)
{
printf ("%s. \n", Param_STOP);
}
exit(0);
}
}
|
|
mercredi 31 août 2005 à 08:48:14 |
Re : Une erreur de segmentation que je ne comprends pas...

semifer
|
Aidez-moi s'il vous plait...
|
|
mercredi 31 août 2005 à 10:32:29 |
Re : Une erreur de segmentation que je ne comprends pas...

simtiers
|
Tu es sûr que Param_START et Param_STOP se termine par un caractère \0 (ou equivalent de fin de chaine)
Sinon, utilise strncmp, le dernier paramètre étant le nombre de caractères à comparer.
|
|
mercredi 31 août 2005 à 10:46:54 |
Re : Une erreur de segmentation que je ne comprends pas...

luhtor
|
Réponse acceptée !
#include <stdlib.h> #include <stdio.h> #include <string.h> #include "aw_var.h" int main(int argc,char *argv[]) { if (argc <=1 ) { printf ("Vous devez passer un paramètre. \n"); exit(0); } else { if (strcmp(argv[1],Param_START)==0) { printf ("%s. \n", Param_START); } if (strcmp(argv[1],Param_STOP)==0) { printf ("%s. \n", Param_STOP); } exit(0); } }
C'est
plutot argc <= 1 et non argc < 1 qu'il faut. Il y a
toujours un paramètre: le nom de l'éxécutable. Et meme si argc = 1,
seul argv[0] existe.
|
|
mercredi 31 août 2005 à 10:47:53 |
Re : Une erreur de segmentation que je ne comprends pas...

semifer
|
Param_START et Param_STOP sont définis dans aw_var.h de cette façon:
#define Param_START "start"
#define Param_STOP "stop"
Mais ces paramètres fonctionnent lorsque je les passe. Si je fais:
./essai start ou ./essai stop , il se passe ce qui doit se passer, ca me retourne la valeur de Param_STOP ou _START. Mais si je tape seuleument ./essai ,
ca me retourne "erreur de segmentation". Donc je pense que ca se situe
ailleurs? En fait j'en sais rien, je débute dans ce langage, et je ne
peux pas en dire plus, malheureuseument...
Merci de répondre en tout cas!
|
|
mercredi 31 août 2005 à 10:51:31 |
Re : Une erreur de segmentation que je ne comprends pas...

semifer
|
Merci luhtor! Je suis
un peu stupide des fois! La seule chose que je n'ai pas testée, tu me
la met dans la face lol... Encore merci, c'est nickel, ca fonctionne!
C'était pourtant si évident... 
|
|
Cette discussion est classée dans : code, erreur, include, segmentation, param
Répondre à ce message
Sujets en rapport avec ce message
Erreur DeviceIoControl ??? pk acces refusé ? [ par akk ]
Bonjour,Voila lorsque j'execute ce code :(on passe le nom du lecteur en parametre exemple : main C)#include #include <iostre
[debutant] erreur : Problème d'affichage [ par arwenita ]
J'ai un erreur pour afficher une variable : error C2228: left of '.GetAdminPassword' must have class/struct/union typeJe ne comprends pas, ma fonc
SEGMENTATION FAULT [ par tekila_bandita ]
Je me suis sous unix depuis peu, et je commence le c depuis peu (je programme vb sinon), et mon problemeet que mesprogrammes c ne marche pas...meme le
Erreur de segmentation [ par cool2source ]
Bon je dois encore avoir du mal avec les pointeurs ( visiblement)... Je compile le code ci-dessous avec gcc et le seul résultat que j'obtiens est : "E
Probleme codage C++ [ par florianlens ]
Bonjour , j'ai un problème dans mon codage : Je suis sous C++ Builder avec la lib vcl Extrait de Code : [code=cpp]void __fastcall TForm1::SpeedButt
Un char[n] est différent d'un char* ??? [ par Polack77 ]
Bonjour, J'ai une erreur TRÈS étrange que vraiment je ne comprend pas [^^confus2] Dans "l'application" : [code=cpp]#include #include #include vo
setEnabled() et QLabel [ par raf924 ]
Bonjour, je fais un programme destiné à verrouiller mon écran, dont voici le code : dialog.h [code=cpp] #ifndef DIALOG_H #define DIALOG_H #include
code block erreur de linkage à la compilation [ par magslide ]
Bonjours à tous le monde. Je travaille sous Code::Blocks en API Windows. Mon problème surviens lors de la compilation de mon project. J'ai le message
Compilation : edition de liens [ par kenshin28 ]
Bonjour à tous, Je travaille avec Qt et me suis fait un petit widget permettant la saisie d'une clé d'enregistrement. Etant donné que le code doit ê
erreur Segmentation fault [ par apu04 ]
Bonjour à tous, je viens d'intégrer une fonction que j'ai faite dans une autre fonction qui existait déjà, qd je compile tout est bien, mais après au
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft 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
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
|