2012-01-26 14 views

cevap

6

yerine yapabilirsiniz: belki

char *testvar = argv[0]; 

Veya:

char *testvar = strdup(argv[0]); 
/* Remember to free later. */ 

pmg gibi notları, strdup standart değil. Malloc + memcpy kullanarak uygulamak güzel bir egzersiz.

Hatta: Açıkça yazarken kural uygulanmalıdır Yani

char testvar[] = "testvar"; 
1

sadece yani bir değişmez bir char diziyi başlatmak için:

char testvar[LENGTH]; 
if (strlen(argv[0]) >= LENGTH) 
    fprintf(stderr, "%s is too long!\n"); 
else 
    strcpy(testvar, argv[0]); 

Ama sonra tekrar Aradığınız olabilir Kaynak kodda diziye hangi karakterlerin konması gerekir. Sadece ("başka bir ad" buna başvurmak için yani) kendisine bir işaretçi istiyorsanız

Yapabileceğiniz:

char * testvar = argv[0]; 

Bir kopyasını istiyorsanız yerine eğer bunun yapmanız gereken:

size_t len = strlen(argv[0]); 
char * testvar = malloc(len+1); 
if(testvar==NULL) 
{ 
    /* allocation failed */ 
} 
strcpy(testvar, argv[0]); 
/* ... */ 
free(testvar); 
1

Bir nesneyi başlatmak için bir sabitlemeye ihtiyacınız vardır. argv[0] sabit değil.
"foobar" aşağıda

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

int main(int argc char **argv) { 
    char array[] = "foobar"; /* array has 7 elements */ 
    char *testvar; 

    testvar = malloc(strlen(argv[0]) + 1); /* remember space for the NUL terminator */ 
    if (testvar != NULL) { 
     strcpy(testvar, argv[0]); 
     /* do something with testvar */ 
     free(testvar); 
    } else { 
     /* report allocation error */ 
    } 
    return 0; 
} 
İlgili konular