两个指针P1,P2 为什么scanf("%s\n,s")指的是P2而不是P1啊啊 .

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 15:51:08
两个指针P1,P2为什么scanf("%s\n,s")指的是P2而不是P1啊啊.两个指针P1,P2为什么scanf("%s\n,s")指的是P2而不是P1啊啊.两个指针P1,P2为什么scanf("%

两个指针P1,P2 为什么scanf("%s\n,s")指的是P2而不是P1啊啊 .
两个指针P1,P2 为什么scanf("%s\n,s")指的是P2而不是P1啊啊 .

两个指针P1,P2 为什么scanf("%s\n,s")指的是P2而不是P1啊啊 .
p1=p2=s;
将字符数组的首地址赋值给p1和p2,因此循环开始前p1和p2的值一样,都是S的地址.

在循环中,判断p1指向的地址中是否为空格,
如果是空格:
则p1++,即指向后面一个字符.
如果不是:
则将p1指向的字符复制到p2指向的地址,然后p1和p2都加1,即均指向后一个字符.

循环过程就是不断扫描字符,p1作为源字符指针,p2作为目标字符指针,过滤掉空格,重新排列,直到p1指向结束符为止.

所以循环结束时,p1和p2不再指向S.p1和p2指向哪里已经不重要,因为去掉空格的任务已完成.
S中的字符已重新排列,也就是形成了新的字符串,即不带空格的字符串.