Bueno, hasta donde alcanzo a ver y hasta donde probé todo esta bien. Te recomiendo que te fijes bien el tamaño de cadena, en caso de ser estático y si es dinámico con más razón aún.
Probé esto y funcionó bien en mi PC:
Código:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *funcion(char *cadena);
char *strupr (char *cadena);
int main()
{
char cadena[128], *res;
strcpy(cadena, "pepe");
printf("\n %s", cadena);
res = funcion(cadena);
printf("\n %s", cadena);
return 0;
}
char *funcion(char *cadena)
{
strcat(cadena, " hola mundo");
strupr(cadena);
return cadena;
}
char *strupr (char *cadena)
{
char *ret = cadena;
while (*a != '\0')
{
if (islower (*cadena))
*cadena = toupper (*cadena);
++cadena;
}
return ret;
}
Saludos
P.D.: No estoy usando el VC++.