2 Stimmen

Haben const char * und strdup die gleiche Funktion, wenn sie mit getopt in C verwendet werden?

Kann ich in dem unten stehenden Codeschnipsel char * durch const char * ersetzen und den Aufruf der Funktion strdup() entfernen und direkt den durch getopt() festgelegten optarg-Wert übernehmen? Mir wurde geraten, const char * zu verwenden, um die Verwendung der Funktion strdup zu überspringen. Vielen Dank für die Hilfe im Voraus.

/* 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...
 }
} 

Ich verstehe wirklich nicht, warum das so sein soll.

Edit: Danke für die Antworten. Das war wirklich hilfreich. Ich habe den Code auf const char * geändert und den strdup-Aufruf übersprungen.

Danke! Liju

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X