c - 这个 for 循环的条件是做什么的?

标签 c for-loop

这是一个将字母转换为大写的程序。

谁能解释一下下面程序中 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;
}

最佳答案

gets() 将返回一个以 0 结尾的字符串,所有 C 字符串都应该如此。因此,如果您输入“四”,添加到 a 的实际内容将是这四个字母后跟一个 0 字节。

 // as if you'd declared
 char a[] = { 'f', 'o', 'u', 'r', 0 };

循环测试每个字符以查看它不是 0。当a[i]0时,条件不成立,循环结束。它只是循环遍历字符串中的所有实际字符。

关于c - 这个 for 循环的条件是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529330/

相关文章:

c - 128,256位C代码的二进制转换为十六进制

c - 无法访问 svOpenArrayHandle 的维度

Java - For 循环将无法完成,仅三个循环后就会崩溃

for-loop - 更新 map 中的键,同时遍历该 map

for-loop - 为什么这个 for 循环永远不会退出?

C++ For 循环和数组混淆

c++ - 是否可以将数组数字作为函数执行?

c - 关于二进制 "bit position"命名法

无法在C中编译基础教程

C++ 我可以用 1 个循环替换嵌套循环吗