好的,我有一个函数来检查一个数字是否是一个回文(它尚未完成),它调用了一个名为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';
}
答案 0 :(得分:1)
我不明白这个问题,对我很好。 无论如何,你工作太辛苦了。写一些类似的东西会更有效率:
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;
}
答案 1 :(得分:-1)
在copy string()函数的末尾,目标和源指针都指向'\ 0'字符,因此如果调用putchar(* destination)或putchar(* source),它们将打印为空白。