我在嵌入式c工作了一个月,直到现在我遇到了简单的循环,如:
for(i=0;i<10;i++)
但现在我遇到了一种新的for循环:
for(t=0; string[t]; ++t)
任何人都可以告诉我这个循环是如何工作的。 示例代码为:
#include <stdio.h>
#include <ctype.h>
void print_upper(char *string);
int main(void)
{
char s[80];
printf("Enter a string: ");
gets(s);
print_upper(s);
printf(''\ns is now uppercase: %s", s);
return 0;
}
/* Print a string in uppercase. */
void print_upper(char *string)
{
register int t;
for(t=0; string[t]; ++t)
{
string[t] = toupper(string[t]);
putchar(string[t]);
}
}
答案 0 :(得分:7)
如果字符串以null结尾,则最后一个字符将为null。这评估为false。 for语法的middle子句是一个布尔表达式。如果为真,则循环继续,如果为假,则循环终止。循环索引字符串的字符t
,并递增t
,这意味着它依次测试每个字符以查看它是否为“true”。
因此,此语法将遍历字符串中的每个字符并在结尾处停止。
答案 1 :(得分:1)
循环有3部分
t=0;
初始化
string[t];
条件退出循环,如果string [t]是null
,就像说条件为假,循环将退出
++t
增量,一旦进行了一次循环,就会增加t 所以基本上,你的循环通过char检查字符串char,一旦找到空字符,就会退出