我实施班次时遇到了一点麻烦。这是我想要做的事情的想法:
给定一个像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;
}
}
答案 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