Функция копирования строк не работает в 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), они будут печататься пустыми.