C - Trabalhando com fopen, fclose, fputc etc

Eu finalmente tenho esse código trabalhando com um único argumento na minha linha de comando, ou seja, um arquivo para ele trabalhar, embora eu tenha projetado o código com o conceito de que ele trabalha com um número ilimitado de arquivos. O que ele faz é pegar um número X de arquivos de texto contendo palavras separadas por espaços e substituir espaços por\n criando assim uma lista de palavras. No entanto, ele conclui com êxito o primeiro argumento, mas ignora o segund

Outro problema menor parece que também imprime uma letra de lixo no final, um Y com dois pontos acima; Presumo algum símbolo EOF, mas não consigo parar de acontecer!

int main(int argc, char** argv) {
    FILE *fpIn, *fpOut;
    int i, j;
    j = 1;
    char c;
    char myString[256];

    printf("%d", argc);
    printf("\n");
    printf("The following arguments were passed to main(): ");
                for(i=1; i<argc; i++) printf("%s ", argv[i]);
    printf("\n");

    while(argc--) {
        for(i = 1; i < argc; i++) {
            fpIn = fopen(argv[j], "rb");
            snprintf(myString, 256, "%s~[%d]", argv[j], i);
            fpOut= fopen(myString, "wb");
            while (c != EOF) {
                c = fgetc(fpIn);
                if (isspace(c)) 
                    c = '\n';
                fputc(c, fpOut );
            }
            j++;
        }
    }
    return 0;
}

questionAnswers(1)

yourAnswerToTheQuestion