puts是输出字符串,遇到字符串中的0值时结束,并且输出回车
printf也是输出字符串,但没有自动加换行的功能,因此你看到两行前面到大写C都输出一致
而用循环逐一输出字符数组内容,遇到0也不会自动结束,由于0字符无法显示输出空字符,不占输出位置,从头输出时,前面的内容与puts是一致的,因此你看到又重复输出了到大写C的内容,之后才是后续内容,这部分是前面两个语句无法输出的,属于另一截字符串内容了
数组中存放了两个字符串,如果想与循环输出效果相同的内容,可以写:
printf("%s%s",str,str+9); //这里给出了两个字符串起始位置,每个字符串输出遇到0则结束