1) Te ne lis pas la chaine comme il faut. Avec %s il faut passer a scanf un char *, qui est l'adresse d'un buffer. Donc en gros dans ton cas il faut soit char message[1024], soit tu gardes un char * mais il faut allouer un buffer avec malloc.
2) Lire un %s avec scanf c'est dangereux, parce qu'il n'y a pas de controle sur la taille des donnees lues. En fait il peut y a avoir un controle, mais vu ton niveau utilises plutot fgets.
3) Dans printf, %s affiche une chaine, pas un charactere. Il te faut soit %c, soit (mieux) utiliser fputc.
4) C'est juste une question de style, mais c'est idiot de controler i > -1 alors que i >= 0 marche aussi bien, sans deborder des plages de valeurs qui ont un sens pour i (le jour ou tu a un unsigned, tu fera comment ?).