有关于数组的赋值问题

为啥这个程序输出的结果是把数组b的内容一一拷贝到数组a。而不是把两个数组中的内容一一替换,使数组a的内容(变为数组b的内容。纠结好久了,求解答,万分感谢。图片

图片说明
#include

int main(){
char a[100] = "This is a";
char b[100] = "I am b";
char temp;
for (int i;a[i]!='\0' || b[i]!='\0';i++){
temp = a[i];
a[i] = b[i];
b[i] = temp;

}
printf("a = %s\nb = %s\n",a,b);
return 0;
}

#include

int main(){
char a[100] = "This is a";
char b[100] = "I am b";
char temp;
for (int i;a[i]!='\0' || b[i]!='\0';i++){
temp = a[i];
a[i] = b[i];
b[i] = temp;

}
printf("a = %s\nb = %s\n",a,b);
return 0;
}

#include

int main(){
char a[100] = "This is a";
char b[100] = "I am b";
char temp;
for (int i;a[i]!='\0' || b[i]!='\0';i++){
temp = a[i];
a[i] = b[i];
b[i] = temp;

}
printf("a = %s\nb = %s\n",a,b);
return 0;
}