C语言puts()与字符指针操作打印空行问题咨询
问题1:为什么puts(pB)仅输出空行
*pB ++ = *pA ++的执行逻辑是:先将当前pA指向的字符拷贝到pB指向的内存地址,再将两个指针分别向后移动1位。
全局字符数组strB默认初始化全为\0,拷贝完成后pB已经移动到了刚写入字符的下一个位置,该位置的初始值就是\0。puts碰到\0会判定字符串结束,因此只会打印空内容,加上puts默认自带的换行符,最终表现就是仅输出空行。
如果要实现「每拷贝一个字符就打印一次当前strB的完整内容」的需求,将line c替换为puts(strB)即可。
问题2:替换为puts(pA)能否逐次打印strA剩余内容
可以,符合你的预期。
拷贝完成后pA会指向原字符串中当前刚拷贝字符的下一个位置,此时调用puts(pA)就会打印从该位置到原字符串末尾的内容,每循环一次打印的内容就少一个开头字符,直到最后pA指向原字符串的终止符\0时,会打印一次空内容,之后循环判定*pA != '\0'不成立,循环结束。
内容的提问来源于stack exchange,提问作者claud
相关产品推荐
相关产品推荐

