任何人都知道如何搜索(运气好)数组中的特定元素?我试过一切 - 除了正确的方法。
我的两个相应的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循环的其他变种,没有运气。我现在才被卡住......
答案 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]);
}