dou44481 2011-10-26 15:38
浏览 87
已采纳

fgetc引用变量

I'm playing a bit of fun code golf, and I'm running into an issue:

Golfed:

<? while($v=fgetc(STDIN)){echo$v?$v:'';while((int)$v)echo--$v?$v:'';}

ungolfed:

<? 
while ( $v = fgetc(STDIN) ) {
    echo ($v ? $v : '');
    while ( (int) $v ) { echo (--$v ? $v : '' ); }
}
?>

While looping through the file, it seems I hit EOF very quickly, almost as if my iterations through $v are forwarding fgetc as if it was a pointer.


Input:

Recent endless problems

    * 463. Enumeration of divisor
    * 469. hexdump
    * 470. hexdump2
    * 484. Double Square Numbers
    * 489. The Sexiest

Expected output:

Recent endless problems



    * 4321654321321. Enumeration of divisor

    * 4321654321987654321. hexdump

    * 43217654321. hexdump21

    * 4321876543214321. Double Square Numbers

    * 432187654321987654321. The Sexiest

My output:

Recent endless problems



    * 4321654321321. Enumeration of divisor

    * 4321654321987654321. hexdump

    * 43217654321

Input:

HKLdQa?*WuHS6%&1i1LHG $s9?vog*M9x`joh9c_5,ORr}W$AFqZ8r86l5=,5pCae."m,'DcG>bjxGr@
x&z2mmH@_.Xj^>:)oh|G@:F;!T{1]^`X<>}J@*K0;&I;(1c5K^LvNCE,5AG)F`E'i,xd$HuXad6xK/rw
'M>"0,~e*JMfJGbr9TGiHYV:y#rOsZJZGP/xMS&Og)2#?QSPJ`nt$!!^nqtM ;auG|ik,[,dtevEOQq{
89_e.DQ{#eD$HLJ]hFWEIg* 7"OVxwXD<K(~Ql"#medx<IESsp^Y EWh5RmQ!LGglfD^yje+lR+F|m'N
51+8jq't tR5Y,byf6nB} v8 0B-=X&7?;+L,f,n64E5HR?f2i[L3*$ ^t2R +(a~NowJ(sqCw7mFS'3
8TD?=GlYzE#uT!Cln.4%BXTFz|?XsU,Qd|N fDw;xOGHK9J&(?9%<_G| L%4&,_D1d-nf66sQy2- &_d
S`A>%r:>Fa)`arp1(v08F**4Ws?|N_GJx$(_{JZ"?6w8MY~4{/9crDh2T?;Y4/:h67i-o2ic:?7nvit}
d{M>6-b<+-du7*HAJ5nx]20m}Jq+[?RW<Fqa|$sy/Vx`uF&BT;m$=5GC!/|[Su?R0Ir_fM9h01_._"?=
b%$urP0r2_u[L_i(h84P;RFpf<HFKo@CkDAC|m*Myp9tpEOe+N?2`"KI+ASans4RN(wq?FS-`-wcwWbd
NlxeV%=GSVcDDWO?BsoVUdHu0^u#7S#C_{6I*I46f4R-Nak&S%IBiN6kEw<oW$uWO)h3<O)2,TMU?rVU
-LC_Z|D$25zU}89ID}`*w=BJ69D?[$83#YhpNqMZ<v.JM`%F }#-S"WP~G>K/d,BNTGNmCt?us*/b{~]
X_=g{D?`4S)"CH(wrs_^7LNy[+M1ni[]>eTw6` kBi3}oxZsU2#Mw"0uKl$(rIL^Dl']=k0.Q08)?(8,

Expected output:

HKLdQa?*WuHS654321%&1i1LHG $s987654321?vog*M987654321x`joh987654321c_54321,ORr}W$AFqZ87654321r87654321654321l54321=,54321pCae."m,'DcG>bjxGr@

x&z21mmH@_.Xj^>:)oh|G@:F;!T{1]^`X<>}J@*K;&I;(1c54321K^LvNCE,54321AG)F`E'i,xd$HuXad654321xK/rw

'M>",~e*JMfJGbr987654321TGiHYV:y#rOsZJZGP/xMS&Og)21#?QSPJ`nt$!!^nqtM ;auG|ik,[,dtevEOQq{

87654321987654321_e.DQ{#eD$HLJ]hFWEIg* 7654321"OVxwXD<K(~Ql"#medx<IESsp^Y EWh54321RmQ!LGglfD^yje+lR+F|m'N

543211+87654321jq't tR54321Y,byf654321nB} v87654321 B-=X&7654321?;+L,f,n6543214321E54321HR?f21i[L321*$ ^t21R +(a~NowJ(sqCw7654321mFS'321

87654321TD?=GlYzE#uT!Cln.4321%BXTFz|?XsU,Qd|N fDw;xOGHK987654321J&(?987654321%<_G| L%4321&,_D1d-nf654321654321sQy21- &_d

S`A>%r:>Fa)`arp1(v87654321F**4321Ws?|N_GJx$(_{JZ"?654321w87654321MY~4321{/987654321crDh21T?;Y4321/:h6543217654321i-o21ic:?7654321nvit}

d{M>654321-b<+-du7654321*HAJ54321nx]21m}Jq+[?RW<Fqa|$sy/Vx`uF&BT;m$=54321GC!/|[Su?RIr_fM987654321h1_._"?=

b%$urPr21_u[L_i(h876543214321P;RFpf<HFKo@CkDAC|m*Myp987654321tpEOe+N?21`"KI+ASans4321RN(wq?FS-`-wcwWbd

NlxeV%=GSVcDDWO?BsoVUdHu^u#7654321S#C_{654321I*I4321654321f4321R-Nak&S%IBiN654321kEw<oW$uWO)h321<O)21,TMU?rVU

-LC_Z|D$2154321zU}87654321987654321ID}`*w=BJ654321987654321D?[$87654321321#YhpNqMZ<v.JM`%F }#-S"WP~G>K/d,BNTGNmCt?us*/b{~]

X_=g{D?`4321S)"CH(wrs_^7654321LNy[+M1ni[]>eTw654321` kBi321}oxZsU21#Mw"uKl$(rIL^Dl']=k.Q87654321)?(87654321,

My output:

HKLdQa?*WuHS654321%&1i1LHG $s987654321?vog*M987654321x`joh987654321c_54321,ORr}W$AFqZ87654321r87654321654321l54321=,54321pCae."m,'DcG>bjxGr@

x&z21mmH@_.Xj^>:)oh|G@:F;!T{1]^`X<>}J@*K

Are my suspicions correct? Am I prematurely hitting EOF by iterating through $v?

  • 写回答

1条回答 默认 最新

  • dpus81500574 2011-10-26 15:51
    关注

    The manual suggests checking for false using the following:

    while (false !== ($char = fgetc($fp)))
    

    This is because this function can return 0, "" or false.

    http://php.net/manual/en/function.fgetc.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler