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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Une erreur de segmentation que je ne comprends pas...


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

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


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 : 16,692 sec (4)

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