Violation d'accès mémoire

Résolu
cs_zoneart Messages postés 5 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 mars 2010 - 24 mars 2009 à 07:39
cs_zoneart Messages postés 5 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 mars 2010 - 26 mars 2009 à 14:17
Bonjour,

Je suis débutant et j'ai écris deux trois lignes de codes que j'aimerais vous soumettre car une erreur de violation d'accès mémoire survient lorsque je quitte le programme. N'arrivant pas à trouver de quoi il s'agit je m'en remet à vous. Merci d'avance pour votre aide.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    int choix;
    char var[]="";
    char IP[20];
    char user[10];
    char c;
   
    system ("title Nestlé Utilities");
    printf ("\n\n");
    printf ("********************\n*                  *\n*    M  E  N  U    *\n*                  *\n********************\n\n");
    printf ("nslookup tapez 1\n");
    printf ("ping tapez 2\n");
    printf ("net user tapez 3\n");
    printf ("Menu tapez 4\n");
    printf ("ipconfig tapez 5\n");
    printf ("Pour afficher une console tapez 6\n");
       printf ("Pour quitter tapez 0\n");

    do {
        printf ("\n");
        printf ("Selection : ");
        scanf ("%d", &choix);
     
        while (c = getchar() != '\n')continue;
   
        switch (choix) {
       
            case 1 : printf ("\n *** N S L O O K U P ***\n\n");
                         printf ("\nEntrez l'adresse IP : ");
                         scanf ("%s", IP);
                
                         while (c = getchar() != '\n')continue;
                
                         sprintf (var, "nslookup %s", IP);
                       
                         system(var); break;
         
              
            case 2 : printf ("\n *** P I N G ***\n");
                         printf ("\nEntrez l'adresse IP : ");
                         scanf ("%s", IP);
                
                         while (c = getchar() != '\n')continue;
                
                       
                         sprintf (var, "ping %s", IP);
                       
                         system(var); break;
       
              
            case 3 : printf ("\n *** N E T U S E R ***\n");
                         printf ("\nEntrez un username : ");
                         scanf ("%s", user);
       
                         while (c = getchar() != '\n')continue;
       
                       
                         sprintf (var, "net user %s /domain", user);
                       
                         system(var); break;
       
              
            case 4 : printf ("\n\n");
                         printf ("********************\n*                  *\n*    M  E  N  U    *\n*                  *\n********************\n\n");
                         printf ("nslookup tapez 1\n");
                         printf ("ping tapez 2\n");
                         printf ("net user tapez 3\n");
                         printf ("Menu tapez 4\n");
                         printf ("ipconfig tapez 5\n");
                         printf ("Pour afficher une ligne commande tapez 6\n");
                         printf ("Pour quitter tapez 0\n"); break;
                       
                       
            case 5 : printf ("\n *** I P  C O N F I G ***\n");
                         system ("ipconfig /all"); break;
       
              
            case 6 : printf ("\n\n");
                         printf ("\n *** C M D  D O S *** \n");                       
                         system("cmd"); break;
       
              
            case 0 : return EXIT_SUCCESS;
       
              
            default : printf ("Erreur, pas disponible (tapez 4 pour afficher le menu)\n"); break;
        }
    }
     
    while (choix != 0);

printf ("\n\n");
return EXIT_SUCCESS;

}

2 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
25 mars 2009 à 20:16
Salut,

char var[]="";
...
sprintf (var, "nslookup %s", IP);

Tu mets quelque chose dans une chaîne vide. Alloue un buffer :
char var[200];
3
cs_zoneart Messages postés 5 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 mars 2010
26 mars 2009 à 14:17
Yeah !! 

Merci bien, à première vue ça a l'air d'être ça et ça marche impec.

Encore merci.
3
Rejoignez-nous