字符串序列及其实现

时间:2016-10-28 05:52:03

标签: c cs50

我实施班次时遇到了一点麻烦。这是我想要做的事情的想法: 给定一个像012345这样的数字串,给定一个特定条件,序列将从
转变为 012345
001234.Can有人告诉我为什么代码不起作用以及如何解决这个问题。

for(int a = i; a < (strlen(input)); a++)
                if (a < strlen(input) - 2)
                    {
                        holder  = key[a+1];
                        key[a+1]  = key[a];
                        key[a+2] = holder; 
                    }
        }

1 个答案:

答案 0 :(得分:0)

要向右移动一个字符串,您可以这样做:

#include <stdio.h>
#include <stdint.h>
#include <string.h>

void shift_r_str (char *string, size_t len, uint8_t shift);

int main(void)
{
    char input[] = "012345";

    shift_r_str(input, strlen(input), 1);
    printf("Shifted: %s\n", input);

    shift_r_str(input, strlen(input), 2);
    printf("Shifted: %s\n", input);

}

void shift_r_str (char *string, size_t len, uint8_t shift)
{
    size_t i;

    if (len < shift)
    {
        shift = len;
    }

    for (i=len-1; ((i>0) && (i>=shift)); i--)
    {
        string[i] = string[i-shift];
    }

    for (i=0; i<shift; i++)
    {
        string[i] = '0';
    }
}

输出将是:

Shifted: 001234
Shifted: 000012