首页 > 解决方案 > C 中的 for 循环 ;for(conditions); 一个命令;

问题描述

这个 for 循环是如何工作的?

for (i = 0; N[i] != 0 && N[i] != '.'; i++);N[i] = 0;printf("%s", N);

输入:N = 123456.789(字符)

出:123456

具体来说,我对 for 循环的了解是

  1. for(i=0;i<10;i++){sentences}
  2. for(i=0;i<10;i++) a sentence;

这个 for 循环是如何工作的?

标签: cfor-loop

解决方案


不要将其写在不可读的单行上,而是将其拆分(为了清楚起见,使用'\0'而不是0字符):

for (i = 0; N[i] != '\0' && N[i] != '.'; i++)
    ; // Empty loop
N[i] = '\0';
printf("%s", N);

这会增加索引i,直到字符串中的字符N是 a '.',或者直到您到达字符串的末尾。

然后它将索引处的字符替换为iNUL 字符串终止符(您的代码将其写为0,这很好,但我发现'\0'更清楚地显示了意图)。如果这已经是字符串的结尾,则什么也不做。如果它是 a '.',这将截断句点处的字符串。

然后它打印这个被截断的字符串,没有它删除的句点。


推荐阅读