codice:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
   char vet[100] = "Hello, come va?";
   char *str = (char *)malloc(sizeof(char)*strlen(vet));
   strcpy(str, vet);
   int i = 0;

   printf("La dim di vet è %d\nLa dim di str è %d\n", sizeof(vet[0]), sizeof(*str) );
   while( vet[i] != '\0' )
   {
      vet[i] = toupper( vet[i] );
      i++;
      
   }
   printf("Vet in maiuscolo: %s\n", vet );
   
	 i = 0;
   while( str[i] != '\0' )
   {
      str[i] = toupper( str[i] );
      i++;
      
   }
   printf("str in maiuscolo: %s\n", str );
   free(str);
   return 0;
}
Così funziona!
Quel puntatore è un puntatore ad una costante di cui ovviamente non puoi modificare il valore!