Функция копирования строк не работает в C

Хорошо, у меня есть функция, чтобы проверить, является ли число палиндромом (оно еще не завершено), который вызывает функцию с именем copystring(),

Если у меня есть

putchar(*destination)

В пределах copystring() Функциональный цикл выводит строку назначения, как и должно быть. Тем не менее, исходная строка в is_palindrome функция не редактируется. Это остается пустым. Почему это происходит и как я могу это исправить?

int is_palindrome(int num)
{
    char buffer[30];
    char reversebuffer[30];
    sprintf(buffer, "%d", num);

    copystring(reversebuffer, buffer);
    reversestring(reversebuffer, strlen(reversebuffer));
}

void copystring(char *destination, char *source)
{
    while (*source){
        *destination = *source;
        ++source;
        ++destination;

    }
    *destination = '\0';
}

2 ответа

Я не понимаю проблему, у меня это работает нормально. Во всяком случае, вы работаете слишком усердно для этого. Было бы гораздо эффективнее написать что-то вроде:

bool is_palindrome2(int num)
{
    char buffer[30];
    sprintf_s(buffer, "%d", num);
    int length = strlen(buffer);

    for(int i=0; i < length/2 ; i++)
    {
        if(buffer[i] != buffer[length - i - 1])
            return false;
    }

    return true;
}

В конце функции copy string() указатели как назначения, так и источника указывают на символ '\0', поэтому, если вызвать putchar(*destination) или putchar(*source), они будут печататься пустыми.

Другие вопросы по тегам