Ponteiro simples com erro na execução

Boa tarde galera,
estou utilizando o codeblocks mingw 10.05

o programa a seguir esta com erro na execução, não sei pq. Coloquei um printf apos o while e ficou com loop infinito. Peguei esse exemplo da biblia c/c++, mas no livro esta especificando que é apenas c, ainda não entrou em c++. Alguem poderia me explicar ou me orientar sobre…

[code]#include <stdio.h>
#include <ctype.h>

char *string_maiusc(char *string)
{
char *ender_inicial, *temp;
ender_inicial = temp = string;

while (*string)
*(temp++) = toupper(*string++);
return(ender_inicial);
}

void main(void)
{
char *titulo = “Biblia do Programador C/C++!”;
char *string;

string = string_maiusc(titulo);
printf("%s\n", string);
printf("%s\n", string_maiusc(“Matrizes e Ponteiros”));
}
[/code]

Desde já agradeço