我有以下两个数组:
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]);
}
}
问题是我的上述方法无效
答案 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上运行,但你并不是真的希望它这样做,所以你需要一个单独的变量(计数器)用于第二个变量。
然后你会按照自己的意愿打印它。