问题遇到的现象和发生背景
一下两种左旋字符串,为什么结果不一样?
问题相关代码,请勿粘贴截图
void leftmove(char arr[], int k)
{
int i = 0;
int len = strlen(arr);
for (i = 0; i < k; i++)
{
char* tmp = arr;
int j = 0;
for (j = 0; j < len - 1; j++)
{
arr[j] = arr[j+1];
}
arr[len-1] = *tmp;
}
}
int main()
{
char arr[] = "abcdef";
leftmove(arr, 2);
printf("%s", arr);
return 0;
}
void leftmove(char arr[], int k)
{
int i = 0;
int len = strlen(arr);
for (i = 0; i < k; i++)
{
char tmp = arr[0];
int j = 0;
for (j = 0; j < len - 1; j++)
{
arr[j] = arr[j+1];
}
arr[len-1] = tmp;
}
}
int main()
{
char arr[] = "abcdef";
leftmove(arr, 2);
printf("%s", arr);
return 0;
}
运行结果及报错内容
第一个结果是cdefbc
第二个结果是cdefab(这个是正确的)