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

标签 c arrays string dynamic char

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

例如,选择字符 '8'来自temp_holder[] ,将其连接到 "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/

相关文章:

java - 如何在 Java 中将 SID 转换为字符串,反之亦然?

c++ - 反转字符串,奇怪的输出 C++

python - 检查字符串是否包含 Python 数组中的多个元素

c# - 字符串 = 字符串 + 整数 : What's behind the scenes?

c - SDL 创建窗口不在 Mac os X 上创建窗口

c - c和perl之间的printf区别

javascript - JS Array.prototype.filter with Array 扩展类构造函数调用

c - 为什么这在 C(数组)中无效?

c - 是否有将 Arduino 代码转换为 C 代码的方法或教程?

c - C 中函数重载的替代方案