为什么第一次分配str1 [0]?不应该是str1 [1]吗?

A.V*_*Vik 5 c for-loop pre-increment

在for循环中,我们使用的是在循环开始执行之前递增的++i含义.我在这里弄错了什么?i1

这是代码:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    int i;
    scanf("%s", str1);
    for (i = 0; str1[i] != '\0'; ++i) {
        str2[i] = str1[i];
    }
    str2[i] = '\0';
    printf("%s\n", str2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 5

for循环语法由三个语句组成.第三个("更新步骤")在循环体的末尾执行.所以在第一次迭代中,我是零.

表达方式

for(init_stmt; cond_expr; update_stmt)
  body_stmt;
Run Code Online (Sandbox Code Playgroud)

将导致代码大致相当于以下内容:

{
  init_stmt;
  while(cond_expr) {
    body_stmt;
    update_stmt;
  }
}
Run Code Online (Sandbox Code Playgroud)