for循环的条件部分如何在这个程序中工作。请任何人向我解释.phone [i] [0] [0]表示首先列出第一个字符串和第一个字母。
#include<stdio.h>
#include<string.h>
char phone[][2][40] = {
"Fred","555-1010",
"Barney","555-1234",
"Ralph","555-2347",
"Tom","555-8396",
"",""
};
int main(void)
{
char name[80];
int i;
printf("Name? ");
gets(name);
for(i=0; phone[i][0][0]; i++)
if(!strcmp(name, phone[i][0]))
printf("Number: %s", phone[i][1]);
return 0;
}
答案 0 :(得分:1)
null字符的评估结果为退出条件中的false
,这就是您在phone[i][0][0]
中所做的事情。并且你的for循环将在i=4
或当你到达数组中的第五个条目时终止。
由于旁注从不使用gets
。用户fgets
改为在评论中指出,
fgets(name,40,stdin); // 40 max chars including null character.