gpt4 book ai didi

c - 将 main 中的数组转换为全局数组,稍后由 main 更改?

转载 作者:太空狗 更新时间:2023-10-29 16:52:18 26 4
gpt4 key购买 nike

我有两个字母数组,格式如下:

const char plain[26] = {'a','b',....'y','z'} // this is the the full alphabet
const char crypt[26] = {'i','d',....'m','x'}; // this is the the alphabet scrambled

两个数组中字母表的顺序可以根据输入而改变。此更改发生在主函数中。

这样做的目的是将字符串的字母与第二个匹配,就像加密一样。我将字符与数组值进行比较。所以它看起来像这样(简化)

text[3] = 'yes';
changed[3];
if(text[0] == plain[25]){ //would be done under a for loop so 25 would be a changing integer value
changed[0] = [crypt[25];
}

我的代码在主函数下完美运行。我想像这样提及我的目的,因为我以前只是因为数组类型和格式而遇到问题。由于阵列移到了外面,我可能/正在再次遇到这些问题。


现在我想使数组成为全局数组。实际的加密发生在一个不将数组作为变量的函数中。但我希望函数能够访问它们。

这是现在的样子

const char plain[26];
const char crypt[26];
int maint(void){
const char plain[26] = {'a','b',....'y','z'} \\values get changed here
const char crypt[26] = {'i','d',....'m','x'} \\and here

虽然这没有错误,但我没有得到输出,我相信其他函数使用的是空白数组而不是更改后的数组(如果更改有效的话)。

我尝试了不同的数组类型,我认为问题在于初始化或给数组值。

编辑:澄清一下,这两个数组可以按任何顺序排列。一个文本文件将随机化顺序,可以按以下格式给我:

b,r
m,o
l,s
...
...
...

两种情况下字母表都是随机的。第一列对应于第一个数组(普通),第二列对应于第二个数组(crypt)。

如果有办法按列读取并按格式存储

plain = 'bml...'; \\whole alphabet randomized
crypt = 'ros...'; \\whole alphabet randomized

那也行。

最佳答案

main 中的plaincrypt 与全局的不同。由于您再次声明它们,它们是新的,仅在 main 中可见。因此,您不会更改全局的。

相反,仅在全局范围内声明它们一次并在 main 函数中进行赋值:

char plain[26];

int main(void) {
memcpy(plain, "abcdefghijklmnopqrstuvwxyz", 26); //values get changed here
return 0; // indicate successful program execution
}

另请注意,其中存在一些语法错误

const char plain[26] = {'a','b',....'y','z'} \\values get changed here 

注释以//开头,而不是\\,并且你需要在语句后加一个;。此外,int main 应该在 C 中返回一个 int

当然,如果你不需要实际改变内存而只是将它分配给预定义的字符集,你可以这样做:

const char *plain;

int main(void) {
plain = "abcdefghijklmnopqrstuvwxyz";
return 0;
}

这样你仍然可以使用像 plain[5] 这样的语法来读取它,但是你不能给它赋值,比如说 plain[5] = 'a';.

关于c - 将 main 中的数组转换为全局数组,稍后由 main 更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com