Talvez seja o encoding do terminal do Geany que não aceita caracteres acentuados. Vc testou com nomes sem acento?
Enfim, pode ser que adicionando o cabeçalho #include <locale.h> e depois chamando setlocale(LC_ALL, "en_US.utf8"); no início do main resolva.
Ou então vc pode alterar o programa para usar wide char:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>
int main() {
    setlocale(LC_ALL, "en_US.utf8");
    wchar_t nome[50], sobrenome[50], nomeCompleto[100];
    printf("Qual o seu nome? ");
    wscanf(L"%ls", nome);
    printf("Qual o seu sobrenome? ");
    wscanf(L"%ls", sobrenome);
    swprintf(nomeCompleto, 100, L"%ls %ls", nome, sobrenome);
    printf("Qual o seu nome completo: %ls\n", nomeCompleto);
    return 0;
}
Quanto ao outro problema, é que %s não lê espaços mesmo. Até daria pra usar coisas como scanf("%[^\n]", nome);, mas na verdade o recomendado é usar fgets (para saber mais, leia aqui - e siga todos os links que tem lá, para entender porque scanf não é uma boa opção).
O detalhe chato é que fgets inclui o caractere de quebra de linha no final da string (pois equivale ao ENTER), então temos que retirá-lo manualmente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// função auxiliar para ler a string e remover a quebra de linha no final
char *ler_texto(const char *prompt, char *buffer, size_t buflen, FILE *fp) {
    puts(prompt);
    if (fgets(buffer, buflen, fp) != 0) {
        size_t len = strlen(buffer);
        // se tem a quebra de linha no final, remove
        if (len > 0 && buffer[len - 1] == '\n') {
            buffer[len - 1] = '\0';
        }
        return buffer;
    }
    // não conseguiu ler, retorna zero
    return 0;
}
int main() {
    char nome[50], sobrenome[50], nomeCompleto[100];
    if (! ler_texto("Qual o seu nome? ", nome, 50, stdin)) {
        printf("Erro ao ler o nome\n");
        exit(-1);
    }
    if (! ler_texto("Qual o seu sobrenome? ", sobrenome, 50, stdin)) {
        printf("Erro ao ler o sobrenome\n");
        exit(-1);
    }
    sprintf(nomeCompleto, "%s %s", nome, sobrenome);
    printf("Qual o seu nome completo: %s\n", nomeCompleto);
    return 0;
}