【问题标题】:Copy string function not working in C复制字符串函数在C中不起作用
【发布时间】:2014-01-09 08:46:42
【问题描述】:

好的,我有一个函数来检查一个数字是否是回文(它还没有完成),它调用一个名为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';
}

【问题讨论】:

  • 你为什么不使用标准的strcpy()
  • 发布reversestring() 的源代码或确保该错误不在该函数中。 copystring() 对我来说很好。
  • 您指的是哪个原始字符串buffer 还是 reversebuffer?是什么让你认为它是空白的?展示你的代码来证明这一点。
  • 缓冲区是原始缓冲区,我正在尝试将其内容复制到反向缓冲区中。调用 copystring() 后立即在反向缓冲区上的 printf() 没有输出
  • 它对我有用codepad.org/wGYNSjVL

标签: c string copy cstring


【解决方案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;
}

【讨论】:

    【解决方案2】:

    在复制 string() 函数的末尾,目标和源指针都指向 '\0' 字符,所以如果调用 putchar(*destination) 或 putchar(*source),它们将打印空白。

    【讨论】:

    • putchar() 在 *destination = *source 之后立即在循环内
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2017-07-07
    • 2018-10-02
    • 2016-11-21
    相关资源
    最近更新 更多