gpt4 book ai didi

c - 如何使用通过连接两个动态字符串生成的字符串动态引用数组?

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:55 25 4
gpt4 key购买 nike

我试图从数组中随机选择一个字符,将其连接到字符串 "array_",然后使用新字符串引用数组。

例如,从temp_holder[]中选取字符'8',拼接成"array_",并用它来引用array_8[][]

代码如下:

#include <stdio.h>

main() {
int i, j;

char array_8[5][4];
//Array
for (i = 0; i < 5; i++) {
for (j = 0; j < 4; j++) {
array_8[i][j] = 'x';
if ((i == 1 && j == 1) || (i == 1 && j == 2) || (i == 3 && j == 1) || (i == 3 && j == 2) ){
array_8[i][j] = ' ';
}
}
}


char myArray[5][4];
//Array
for (i = 0; i < 5; i++) {
for (j = 0; j < 4; j++) {
myArray[i][j] = 'x';
if ((i == 1 && j == 1) || (i == 1 && j == 2) || (i == 3 && j == 1) || (i == 3 && j == 2) ){
myArray[i][j] = ' ';
}
}
}

char temp_holder[6] = {'8', '8', '8', '8', '8'};
srand(time(NULL));
int r = rand() % 6;

char arrName[1][10] = {"array_"};
char namesArr[10];
strcpy(namesArr, "array_");
int len = 7;
char arr_names[5][4];
printf("\n%c\n", temp_holder[r]);
strcat(namesArr, &temp_holder[r]);
printf("\n%s\n", namesArr);
strncpy(arr_names, namesArr, len);
strcat(arr_names, "\0");
printf("\n%s\n", arr_names);


int accEntry = 0; //Correct entry counter
for (i = 0; i < 5; ++i){
for (j = 0; j < 4; j++ )
if (myArray[i][j] == arr_names[i][j]){
printf("\n MATCH FOUND %c\n", arr_names[i][j]);
accEntry++;
}
}

printf("\n\n\n%d\n\n\n", accEntry);

getchar();
}

最佳答案

除非您创建自己的名称数组查找表,否则您将无法完成您想要做的事情。假设你有一个 POSIX 系统,你可以通过名称引用全局符号,但你必须使用 dlopen/dlsym 来这样做。如果变量或函数名称不是来自共享库,那么在使用 GCC 或任何适用于您的系统的等效项进行编译时,您必须使用 -rdynamic 链接程序。

#include <assert.h>
#include <dlfcn.h>

char array_8[][10] = { "hello", "world" };

int main ()
{
void *h = dlopen(0, RTLD_NOW);
void *p = dlsym(h, "array_8");
assert(p == array_8);
dlclose(h);
}

关于c - 如何使用通过连接两个动态字符串生成的字符串动态引用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339936/

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