cre que te equivocaste de foro, este foro es de c # y tu pregunta es de c.
sin embargo el error puede ser el siguiente.
-siempre que manejas arrays, ya estas manejando implicitamente direcciones de memoria, asi que scanf , en este caso va sin &:
mal
scanf("%s", &Carlos);
bien
scanf("%s", Carlos);
como esta tu programa, es el equivalente a con una variable normal, es decir no array , hacer alguno de estos:
scanf("%s", &&Carlos);
scanf("%s", &(*Carlos));
scanf("%s", **Carlos);
en fin , debe serr a alguno de estos, por que estas pasando la direcion de memoria del apuntador de un apuntador, y en tui caso esa direccion es "basura", por que no existe, asi que te queda apuintando a alguna direccion de memoria diferente a la de la ubicacion de tu array.
Para que pruebes que esto es asi trata de llenar algun array de ' ' es decir de NULL, y luego de hacer el scanf como lo tienes, imprme el valor de esta variable...
deberia salir nada.