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

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/17 10:39:21
两个指针P1,P2 为什么scanf(
xNQ_iBa2Nr@­CVWU m-(PVD Nї\]*nHhz_?qsµOJJaR`&ŀkw\'*X1nǬ F9ON\ɵO`,wft@{XV"~T}5%9l*msYUղ3܋TZWԘt?c(sVz:E=dDYQ ] G"aMT]FdzTդ*H$,ME.`x)$>2%y-쳄XbQ)) ! oĢ‹1Őd\̉ OSHbº;x6My7a \亞`d lI!tsi aQ9R?aOq6pstupYoRCH%j>wHP@yeZ⎏3PNMZv hHWa6(C mSx8lFuZ~rMeIO[7[,/S=c )vH:|g "=H=iJqc?mRYm9[Y%l'vӑbu>RF*#pS2bÅWy2pxҿF8* 3t?JPӧ"Ok&v6Rg7GSF56Y^GK

两个指针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中的字符已重新排列,也就是形成了新的字符串,即不带空格的字符串.