将char附加到字符串 - NXC语言

时间:2013-10-16 20:08:56

标签: string char nxc

我想给自己写一个类似于PHP str_repeat的函数。我希望这个函数在字符串的末尾添加指定数量的字符。

这是一个不起作用的代码( string argument 2 expected!

void chrrepeat(const char &ch, string &target, const int &count) {
  for(int i=0; i<count; i++)
    strcat(target, ch);
}

2 个答案:

答案 0 :(得分:0)

我不确切知道那是什么语言(C ++?),但你似乎是将char传递给strcat()而不是以null结尾的字符串。这是一个微妙的区别,但是strcat将很乐意访问更多无效的内存位置,直到找到空字节。

而不是使用效率低下的strcat,因为它必须始终搜索到字符串的末尾,您可以为此创建自定义函数。

这是我在C中的实现:

void chrrepeat(const char ch, char *target, int repeat) {
    if (repeat == 0) {
        *target = '\0';
        return;
    }
    for (; *target; target++);
    while (repeat--)
        *target++ = ch;
    *target = '\0';
}

根据在线手册,我让它为repeat == 0的情况返回一个空字符串,因为它是如何在PHP中工作的。

此代码假定目标字符串包含足够的空间以进行重复。函数的签名应该是非常自我解释的,但这里有一些使用它的示例代码:

int main(void) {
    char test[32] = "Hello, world";
    chrrepeat('!', test, 7);
    printf("%s\n", test);
    return 0;
}

打印:

Hello, world!!!!!!!

答案 1 :(得分:0)

将char转换为字符串。

void chrrepeat(char ch, string &target, const int count) {
  string help = "x"; // x will be replaced
  help[0] = ch;
  for(int i=0; i<count; i++)
    strcat(target, help);
}