组合两个数组的键值对

时间:2014-10-23 18:27:54

标签: c arrays key-value

我有以下两个数组:

const char[3] *Letters= {"one", "two", "three"}
const char[5] *Numbers= {"1", "2", "3","4", "5"}

如何打印键值对,例如:

("one" "1"), ("one", "2"), ("one", "3")......("two", "1"), ("two", "2")...

我正在尝试使用for循环来执行此操作:

for(i=0;i<3; i++){
  for(i=0;i<5; i++){
    printf("%s %s \n", Letters[i],Numbers[i]);
  }
}

问题是我的上述方法无效

4 个答案:

答案 0 :(得分:3)

只需对内部for循环语句使用单独的变量。常见的是j

答案 1 :(得分:2)

更灵活且不易出错的方法是使用哨兵,塞子值:NULL而不是显式编码并重复使用数组的大小:

const char[] * letters= {"one", "two", "three", NULL}
const char[] * numbers= {"1", "2", "3", "4", "5", NULL}

char * l = letters;

while (NULL != l)
{
  char * n = numbers;

  while (NULL != n)
  {
    printf("%s %s \n", l, n);
    ++n;
  }

  ++l;
}

答案 2 :(得分:1)

您在for循环中使用相同的变量。您应该为嵌套的for循环使用另一个变量。如何在那里使用j


例如:

#include <stdio.h>

int main() 
{
    int i, j;
    char Letters[3][10] = {"one", "two", "three"};
    char Numbers[5][3] = {"1", "2", "3","4", "5"};
    for(i=0; i<3; i++)
    {
      for(j=0; j<5; j++)
      {
        printf("%s %s \n", Letters[i], Numbers[j]);
      }
    }
}

答案 3 :(得分:1)

尝试使用此代码:

for(i=0;i<3; i++)
{
  for(j=0;j<5; j++)
  {
        printf("%s %s \n", Letters[i],Numbers[j]);
  }
}

你的两个for都在同一个变量i上运行,但你并不是真的希望它这样做,所以你需要一个单独的变量(计数器)用于第二个变量。

然后你会按照自己的意愿打印它。