看来为了做出这道题,我不得不抛弃我刚学会的```sscanf```神器,呜呜(ToT)。
by justinjia @ 2020-12-13 08:57:05
@[justinjia](/user/373226)
```cpp
for(int i=1;sscanf(code,"%c:=%c;",&t1,&t2);i++){
code[(i-1)*5+1]=' ';
code[(i-1)*5+2]=' ';
code[(i-1)*5+3]=' ';
code[(i-1)*5+4]=' ';
code[i*5]=' ';
```
改成
```cpp
for(int i=1;sscanf(code+5*(i-1),"%c:=%c;",&t1,&t2)==2;i++){
```
by Spasmodic @ 2020-12-13 09:24:19
@[justinjia](/user/373226) 您不测样例的吗……
by Spasmodic @ 2020-12-13 09:24:50
@[happydef](/user/121027)
```cpp
code+5*(i-1)
```
这是字符数组,不是```string```。
~~(我这验证码还挺好的,上来就rp\[可惜没有++\])~~
by justinjia @ 2020-12-13 09:28:02
@[justinjia](/user/373226) ???????string 才不能这么干的好吧
by Spasmodic @ 2020-12-13 09:28:51
@[justinjia](/user/373226) 你的错误之处在于,sscanf是从第一个开始扫的,你这样除第一次外根本读不了
by Spasmodic @ 2020-12-13 09:31:38
@[happydef](/user/121027) 可是我这样会把第一个语句用空格覆盖掉的啊?
我想象中的流程(以样例输入为例):
1. 执行第一次循环时,```code```由```a:=3;b:=4;c:=5;```变成了``` b:=4;c:=5;```(应该还有$5$个空格,但是这里打不出来),```a```被赋值为$3$。
2. 执行第二次循环时,```code```由``` b:=4;c:=5;```变成了``` c:=5;```,```b```被赋值为$4$。
3. 执行第三次循环时,```code```由``` c:=5;```变成了``` ```,```c```被赋值为$5$。
4. 此时无法读取到新的```%c:=%c;```,所以退出循环。
by justinjia @ 2020-12-13 09:42:40
@[happydef](/user/121027)
> string 才不能这么干的
```string```中```+```的意思是连接,比如
```cpp
string a="luo";
a+="gu";
cout<<a;
```
输出结果为```luogu```。
by justinjia @ 2020-12-13 09:45:01
@[justinjia](/user/373226) /yun a+1 表示 &a[1]
by Spasmodic @ 2020-12-13 09:46:57
@[justinjia](/user/373226) 大爷char数组是从0开始的
~~你绿勾哪来的~~
by Spasmodic @ 2020-12-13 09:47:31