Ottiene un char
perché si de-fa riferimento a un puntatore char*
.
è possibile modificare il contenuto facendo:
*a = 'B'; // your char* would contain "Bbc"
a[0] = 'B'; // your char* would contain "Bbc"
a[1] = 'B'; // your char* would contain "ABc"
a[2] = 'B'; // your char* would contain "AbB"
Ma, cambiando il contenuto di una stringa letterale ha un comportamento non definito in C. Quindi non dovresti farlo. Invece, è necessario popolare il tuo char*
in modo dinamico. Con qualcosa di simile:
char *a;
a = malloc(sizeof(char)*100); // a string with a maximum of 99 chars
strcpy(a, "Abc");
// now you can safely change char* contents:
a[0] = '1';
a[1] = '1';
a[2] = '1';
printf("%s", a); // will print 111
manipolazione String non è così facile in linguaggi come C . Dato che con la sintassi che stai usando, sembra che tu stia compilando il tuo codice con un compilatore C++, allora potresti dare una prova di classe string
invece di usare i puntatori a char
per gestire le tue stringhe.
fonte
2011-01-28 11:24:21
Attenzione: la modifica dei valori letterali delle stringhe è un comportamento indefinito - sono costanti per una buona ragione – Flexo