C 将整数数组映射到字符串数组时如何进行置换?

C 将整数数组映射到字符串数组时如何进行置换?,c,arrays,encryption,permutation,C,Arrays,Encryption,Permutation,在C编程中,当每个字符映射到一个整数时,如何使用字符串数组编写置换方法?例如,我有一个10个整数的排列: 1,0,2,3,5,4,6,9,8,7-不一定按顺序排列 和一个充满字符的文本,少于400个字符。我将它们都存储到两个单独的数组中,但是如何将每个整数映射到每个字符上呢?在映射它们之后,我将如何编写排列方法 两个数组的大小都不相同。置换数组有10个值,字符数组少于400个字符,但我刚刚将其初始化为:char text[400];每个阵列的大小不会移动 更好的解释: 我在想,如果我有10个整数

在C编程中,当每个字符映射到一个整数时,如何使用字符串数组编写置换方法?例如,我有一个10个整数的排列:

1,0,2,3,5,4,6,9,8,7-不一定按顺序排列

和一个充满字符的文本,少于400个字符。我将它们都存储到两个单独的数组中,但是如何将每个整数映射到每个字符上呢?在映射它们之后,我将如何编写排列方法

两个数组的大小都不相同。置换数组有10个值,字符数组少于400个字符,但我刚刚将其初始化为:char text[400];每个阵列的大小不会移动

更好的解释:

我在想,如果我有10个整数(0-9)和下面的排列-每个排列不能有相同的数字:

0,1,2,3,4,5,6,7,8,9-原件

1,0,3,6,7,4,5,9,2,8-置换

苹果,蜜蜂-10个字符的文本,包括空格和逗号

通过应用上面的排列,我会得到如下结果:

“朋友,爱佩”

如果你使用这个排列的倒数,你会再次得到“苹果,蜜蜂”

原始索引[0]是Apple中的“A”应该在的位置-通过排列,它与“p”切换,因为索引为1。。。等等


那么,我将如何着手实现这一点呢?换句话说,我如何将排列映射到每个字符并使其切换位置?我还没有学会结构。

第一种情况

一个简单的方法是在数组之间建立隐式链接

Array[int]    -->      Array[string]           
   1          -->           "toto"              Array[0]
   0          -->           "titi"              Array[1]
   2          -->           "tutu"              Array[2]
  ...
然后,如果你想排列两个元素,你可以移动字符串和指针

第二种情况

您希望在数组之间建立真正的链接,因此我建议创建一个结构:

struct example
{
   int ArrayInt[10];
   char *ArrayPointer[10];
};
其中,ArrayPointer将包含位于字符串数组中的字符串的地址

例如:

           STRUCTURE

Array[int]   Array[char *]                    ArrayString

0            &ArrayString[1]                  "toto"

1            &ArrayString[0]                  "titi"

2            &ArrayString[2]                  "tutu"
数字0映射为“titi”

带“toto”的数字1

第二个是“图图”

要进行排列,只需更改结构中的指针即可


可以吗?

您有一个包含所有字符串的数组和一个包含所有数字的数组,如char**和int*?您的两个阵列大小相同吗?(一个数字代表一个字符串)数组的大小是否移动?是的!整数数组是上面给定的排列-我只想将它们映射到每个字符。置换数组有10个值,字符数组少于400个字符,但我刚刚将其初始化为:char text[400];隐马尔可夫模型。。我还没有学会结构。我补充了更多关于我想表达的意思的解释。