Como iterar sobre uma string em C?

Agora eu estou tentando isso:

#include <stdio.h>

int main(int argc, char *argv[]) {

    if (argc != 3) {

        printf("Usage: %s %s sourcecode input", argv[0], argv[1]);
    }
    else {
        char source[] = "This is an example.";
        int i;

        for (i = 0; i < sizeof(source); i++) {

            printf("%c", source[i]);
        }
    }

    getchar();

    return 0;
}

Isso também NÃO funciona:

char *source = "This is an example.";
int i;

for (i = 0; i < strlen(source); i++){

    printf("%c", source[i]);
}

Eu recebo o erro

Exceção não tratada em 0x5bf714cf (msvcr100d.dll) no Test.exe: 0xC0000005: Violação de acesso ao ler na posição 0x00000054.

(traduzido livremente do alemão)

Então, o que há de errado com o meu código?

questionAnswers(10)

yourAnswerToTheQuestion