#include <stdio.h>
#include <string.h>
void splitstring(char*, char*, char*);
int main(void)
{
    char str[41];
    char str1[21];
    char str2[21];
    char* ptr = str;
    char* ptr1 = str1;
    char* ptr2 = str2;
    printf("input str: ");
    gets(str);
    printf("%s -> ", ptr);
    splitstring(ptr, ptr1, ptr2);
    printf("%s and %s\n", ptr1, ptr2);
    return 0;
}

void splitstring(char* str, char* word1, char* word2){
    int size = strlen(str);
    int half;
    if(size % 2 == 0){
        half = size / 2;
        strncpy(word1, str, half);
        strncpy(word2, str + half, half);
    }
    else{
        half = (size-1 / 2);
        strncpy(word1, str, half);
        strncpy(word2, str + half, half+1);
    }
    return;
}

문장을 반으로 쪼개서 두 개의 단어로 나누는 프로그램을 만들어보려고 하는데

abcdef를 입력하면

abca and def* 라고 출력됩니다.

배열에 쓰레기 값으로 인한건가요?