2 votes

Est-ce que const char * et strdup ont la même fonction lorsqu'ils sont utilisés avec getopt en C ?

Dans l'extrait de code ci-dessous, puis-je remplacer char * par const char * et supprimer l'appel à la fonction strdup() et prendre directement la valeur optarg définie par getopt() ? On me conseille d'utiliser const char * pour éviter l'utilisation de la fonction strdup. Merci d'avance pour votre aide.

/* Code Snippet */
char *dir = NULL; 
char *bld = NULL;
int chr;

while ( ( chr = getopt( argc, argv, "d:a:b:f:" ) ) != -1 ) {

 switch ( chr ) {

  case 'd': //Directory parameter
   dir = strdup( optarg );
   if (dir == NULL) { /*Error*/ }

  case 'b': //Build parameter
   bld = strdup( optarg );
   if (bld == NULL) { /*Error*/ }
  ...other code...
 }
} 

Je ne comprends vraiment pas la nécessité de le faire.

Edit : Merci pour les réponses. C'était vraiment utile. J'ai modifié le code en const char * et j'ai sauté l'appel strdup.

Merci, Liju

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X