搜索/打印数组中的特定元素

时间:2014-12-18 09:51:43

标签: c multidimensional-array

任何人都知道如何搜索(运气好)数组中的特定元素?我试过一切 - 除了正确的方法。

我的两个相应的char数组看起来像这样:

char array1[10][10]={"Alpha","Bravo","Charlie","Delta","Alpha2"};   //room for some more here
char array2[10][10]={"123456","234567","345678","456789","567890"};   //room for some more here

我可以通过常规for循环打印它们:

for (i=0;i<10;i++){
    printf("%s  %s \n", &array1[i], &array2[i]);
}

但是,让我们说我想做同样的循环,并且只打印以&#39; A&#39;开头的两个元素。 (第一个和最后一个)。我觉得这样的事情会起作用

do {
    for (i=0;i<10;i++){
        printf("Name: %s\nDate: %s\n\n", &array1[i][x], &array2[i]);
        }
    } while (x=='A');

这是相同的for循环,除了我把额外的[x]放在&amp; array1之后告诉我的&#39; x&#39;必须匹配array1的每个元素中的第一个字符(就像它只会执行for循环而(x ==&#39; A&#39;) - 这是我想要的元素中的第一个字母。

但它没有任何好处......

任何人都有更好的解决方案吗?我也试过了for循环的其他变种,没有运气。我现在才被卡住......

3 个答案:

答案 0 :(得分:1)

#include <stdio.h>

int main(void) {
    char array1[10][10]={"Alpha","Bravo","Charlie","Delta","Alpha2"};   //room for some more here
char array2[10][10]={"123456","234567","345678","456789","567890"};   //room for some more here
int i;
for (i=0;i<10;i++){
    if(array1[i][0]=='A')   //add this statement in your code
    printf("%s  %s \n", &array1[i], &array2[i]);
}
    return 0;
}

答案 1 :(得分:1)

在检查x=='A'时使用它将与A的ASCII值进行比较。条件错误。  您可以使用 while((strncmp(array,"A",1)) == 0) 这将检查字符串的第一个字符。

答案 2 :(得分:0)

  

除了我把额外的[x]放在&amp; array1之后告诉我的'x'必须匹配array1的每个元素中的第一个字符

这不是数组下标的工作方式。如您所见,array1[i]将引用i中的array1字符串。然后,您可以通过索引字符串来访问x中的array1[i]个字符,即array1[i][x]

您实际上并未在任何地方指定x,因此您最终会遇到未定义的行为。你想要做的是提取array1[i]的第一个字符(即元素零),所以以下是可能的:

char x = '\0';

do {

    for (i=0;i<10;i++){
        x = array1[i][0];
        printf("Name: %s\nDate: %s\n\n", &array1[i][x], &array2[i]);
        }
    } while (x=='A');

然后你会注意到这可能不会给你想要的行为。它将遍历所有10个字符串,然后执行x == 'A'检查。你应该在循环中移动它,例如。

char x = '\0';
for(i = 0; i < 10; i++)
{
    x = array1[i][0];
    if(x == 'A')
       printf("%s  %s \n", &array1[i], &array2[i]);
}