函数从右向源字符串转移count个字符到目标字符串

  • 本文关键字:字符串 字符 目标 count 转移 函数
  • 更新时间 :
  • 英文 :


我已经编写了这个函数来从源字符串到目标字符串从右转移count个字符。我正在传递字符串到src, NULL到dst和计数值到函数

如果我发送输入字符串为"Stack overflow"并计数为4,我希望o/p字符串为"flow"。但是这里我的o/p字符串总是空的,你能告诉我我的逻辑出了什么问题吗?请

char *Rprint(const char *src, char *dst, int count)
{
    int i = 0;
    char *ret = NULL;
    while(*src!= '')
        src++;
    dst = malloc(sizeof(char) * (count + 1));
    ret = dst;
    dst = dst + (count + 1);
    while(count)
    {
        *dst++ = *src--;
        count--;
    }
    *dst++ = '';
    //return ret;
    printf("String:%s n", ret);
}

我想你是有意这么做的:

*dst-- = *src--;

我不喜欢你做这件事的方式,但这应该让你走上正轨,而不是我建议你完全重写你的代码。

之后不应该以空结束字符串,因为您已经复制了终止符。您正在从末尾复制字符串到开始(反向复制),但将其与更常见的正向复制混淆。

小心你的循环条件。这里可能有一个差1的误差。将count+1加入dst也是一样。我认为你应该只添加count

哦,别忘了从你的函数返回一个值!

下面是工作代码,基于您最初的方法,但做了一些修改。

#include <stdio.h>
void Rprint(const char [], char [], int );

int main()
{
char buff[50] = "stack overflow";
char cut [50];
Rprint(buff,cut,5);
puts(cut);
}

void Rprint(const char src[], char dst[], int count)
{
    while(*src!= '')
       src++;
    src = src - count;
    while(count--)
        *(dst++) = *(src++);
    *(dst++) = '';
}

最新更新