Вы хотите:
for (i = 0; i < strlen(source); i++){
sizeof дает вам размер указателя, а не строки. Однако это сработало бы, если бы вы объявили указатель как массив:
char source[] = "This is an example.";
но если вы передадите массив в функцию, он тоже затухнет до указателя. Для строк лучше всегда использовать strlen. И обратите внимание, что другие говорили об изменении printf для использования% c. А также, принимая во внимание комментарии mmyers относительно эффективности, было бы лучше перенести вызов strlen из цикла:
int len = strlen( source );
for (i = 0; i < len; i++){
или переписать цикл:
for (i = 0; source[i] != 0; i++){