Ho questo piccolo programma che ha lo scopo di convertire da minuscolo a maiuscolo
in due differenti modi. Il problema è che quando si arriva all'istruzione *str = toupper( *str ); avviene un errore di segmentazione.

codice:
#include<stdio.h>

int main()
{
   char vet[100] = "Hello, come va?";
   char *str = "Hello, come va?";
   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 );

   while( *str != '\0' )
   {
      *str = toupper( *str );
      ++str;
   }
   printf("str in maiuscolo: %s\n", str );
}
L'output è questo:
codice:
La dim di vet è 1
La dim di str è 1
Vet in maiuscolo: HELLO, COME VA?
Segmentation fault
Perché mi da "Segmentation fault"?



P.S. Può essere irrilevante, ma uso come compilatore gcc.