复制字符串功能在C中不起作用

时间:2014-01-09 08:46:43

标签: c string copy cstring

好的,我有一个函数来检查一个数字是否是一个回文(它尚未完成),它调用了一个名为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 个答案:

答案 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),它们将打印为空白。