字符串快读

学术版

@[Taoran_01](/user/593907) 数字读入呢,你只读入了字符啊,没有读入数字啊
by wangziwenhk @ 2024-04-11 16:56:45


@[wangziwenhk](/user/727556) 谢谢,`main()`函数里第一行有`n=read();`
by Taoran_01 @ 2024-04-11 17:11:50


@[Taoran_01](/user/593907) 你这个每次memset会带来巨大的复杂度吧
by TankYu @ 2024-04-11 17:12:43


@[Taoran_01](/user/593907) scanf 会在读完字符串以后插入一个 `'\0'` 字符,应该是这里的区别
by Z_301 @ 2024-04-11 17:21:52


@[Taoran_01](/user/593907) `memset` 的问题。注意到你这里 `memset(s,0,sizeof(s))` 而 `s` 类型为 `char*`,其 `sizeof` 恒定为 `8`,这导致你每次事实上只清空 `8` 的长度。
by N_z_ @ 2024-04-11 19:23:09


@[Z_301](/user/175087) 谢谢,但`'\0'`的ASCII是'0',不添加会造成影响。
by Taoran_01 @ 2024-04-12 10:52:20


@[N_z_](/user/320087) 问题得到解决,确实是清空不到位造成的。十分感谢!
by Taoran_01 @ 2024-04-12 10:52:46


@[TankYu](/user/408071) 谢谢!是的,可以优化为清空到`'\0'`截止,改了时间大大减小。
by Taoran_01 @ 2024-04-12 10:53:55


@[N_z_](/user/320087) tql 一针见血地指出漏洞 %%% orz orz
by Taoran_01 @ 2024-04-12 10:59:05


谢谢各位,改好了。 ```cpp char buf[1<<20], *p1, *p2; #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?0:*p1++) void getstr(char* s, ll &len) { for (int pt=1; s[pt]; ++pt) s[pt]=0; char ch=getchar(); len=0; while (ch<'a'||ch>'z') ch=getchar(); while (ch>='a'&&ch<='z') s[++len]=ch, ch=getchar(); } ```
by Taoran_01 @ 2024-04-12 11:06:00


|