这是一个将字母转换为大写字母的程序。
有人能解释一下下面程序中for循环的条件是什么吗?
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
int i;
char a[50];
gets(a);
for(i=0;a[i];i++)
a[i]=toupper(a[i]);
puts(a);
return 0;
}
答案 0 :(得分:2)
gets()
将返回一个以0结尾的字符串,因为所有C字符串都应该是。因此,如果您输入了&#34;四&#34;,添加到a
的实际内容将是那四个字母,后跟一个0
字节。
// as if you'd declared
char a[] = { 'f', 'o', 'u', 'r', 0 };
循环测试每个角色,看它不是0
。当a[i]
为0
时,条件失败,循环结束。它只是循环遍历字符串中的所有实际字符。
答案 1 :(得分:1)
a[i]
计算结果为非零(true)。因此,当a[i]
是终止空字符时,循环会中断。
答案 2 :(得分:0)
按照惯例,C中的字符串末尾有一个零字节,表示字符串的结尾。 for检查此字节并在到达时停止执行,因为字符串中的所有非零字节都计算为true。