struct C中的映射结构

时间:2017-06-08 21:25:30

标签: c pointers struct

我试图在一个结构下索引结构数。

我想将第一个结构中的数据传递给struct指针,但我得到返回null。

我的代码是:

struct complex{
char  * rNum;       /* real number */
char  *iNum;       /* imaginary number*/
};
 struct complex A = {"0","0"};
 struct complex B = {"0","0"};
 struct complex C = {"0","0"};
 struct complex D = {"0","0"};
 struct complex E = {"0","0"};
 struct complex F = {"0","0"};

struct mapping{
  char *key;
  struct complex *P;
 } complex_map [] = {
   { "A", &A },
   { "B", &B },
   { "C", &C },
   { "D", &D },
   { "E", &E },
   { "F", &F },
 };


 char call_complex(const char *name) {
  int i;

 for (i = 0; i < (sizeof(complex_map) / sizeof(complex_map[0])); i++) {
   if (!strcmp(complex_map[i].key, name) && complex_map[i].P->rNum) {
     complex_map[i].P->rNum;
     return 0;
   }
  }
  printf("Invalid\n");
 }

我的通话功能是:

void read_comp(char *str){
printf(" %s",call_complex(str));
}

当我运行此代码时,我得到return(null)

为什么呢? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

试试这个:

#include <stdio.h>

struct complex{
char  * rNum;       /* real number */
char  *iNum;       /* imaginary number*/
};
 struct complex A = {"1","0"};
 struct complex B = {"2","0"};
 struct complex C = {"3","0"};
 struct complex D = {"4","0"};
 struct complex E = {"5","0"};
 struct complex F = {"6","0"};

struct mapping{
  char *key;
  struct complex *P;
 } complex_map [] = {
   { "A", &A },
   { "B", &B },
   { "C", &C },
   { "D", &D },
   { "E", &E },
   { "F", &F },
 };


char call_complex(const char *name) 
{
    int i;

    for (i = 0; i < (sizeof(complex_map) / sizeof(complex_map[0])); i++)
    {
        if (!strcmp(complex_map[i].key, name) && complex_map[i].P->rNum) 
        {
            return *(complex_map[i].P->rNum); // Correction
        }
    }
    printf("Invalid\n");
}

int main()
{
    printf("Got: %c \n",call_complex("A")); // Just example
    return 0;
}

感谢。