c - 移动数组中的字符串位置

标签 c arrays

我想问你是否知道如何移动数组中的字符串位置。我想实现这样的事情。

如果a=1

1 2 0 0 0 0

如果a=2

0 0 1 2 0 0

如果a=3

0 0 0 0 1 2

到目前为止我还没有代码,我只想一些想法。

最佳答案

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

/*
void rotate_right(char *str, size_t n){
    size_t len = strlen(str);
    char temp[n %= len];
    memcpy(temp, str + len - n, n);
    memmove(str + n, str, len - n);
    memcpy(str, temp, n);
}
*/

void rotate_right1(char *str){
    size_t len = strlen(str);
    char temp = str[len-1];
    memmove(str + 1, str, len - 1);
    str[0] = temp;
}

void rotate_right(char *str, size_t n){
    while(n--)
        rotate_right1(str);
}

int main(void){
    char data[] = "120000";
    char wk[sizeof(data)];
    int a;
    for(a=1;a<=3;++a){
        strcpy(wk, data);
        rotate_right(wk, 2*(a-1));
        printf("%s\n", wk);
    }
    return 0;

}

关于c - 移动数组中的字符串位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191681/

相关文章:

c - 为什么多线程malloc中指针的值会变化?

javascript - 匹配相同值的十进制数以插入数组

javascript - 从 javascript 数组中删除元素会导致问题

具有非 size_t 整数的 std::array 的 C++ 模板参数推导

c - 如何从字符串中复制 2 个 int?

c - 是否有 GCC 编译器/链接器选项来更改 main 的名称?

c - 使用@$? C函数/变量中的符号

ruby - 按可能为 nil 的属性对对象的 ruby​​ 数组进行排序

python - 更改多行数组的numpy矢量化方式(行可以重复)

c - objcopy 生成的原始二进制文件太大