dove sbaglio?

codice:
#include <stdio.h>




void stampa(char* testo);
char* lower2(char* testo);
main(){
char * a = "CIaOoOo";
char * b = lower2(a);
printf("%s", b);
system("pause");
}


void stampa(char* testo){
  int i;
  for(i=0;testo[i]!='\0';i++) printf("%c", testo[i]); 
  /* printf("%s", testo); */
}


char* lower2(char* testo){
  int i;
  char msg[40];
  for(i=0;testo[i]!='\0';i++) msg[i]=(char)lower(testo[i]);
  msg[i]='\0';
  return msg;
  
}


int lower(int c)
{
  if(c >= 'A' && c <= 'Z')
    return c + 'a' - 'A';
  else
    return c;
}