当 sscanf 输入 char 类型的变量时, 我使用了 &s 作为格式化的参数,整体如下。
string s;
int ans = 1;
char _opt, _ii, _x[10], _y[10];
sscanf(s.c_str(), "%s%s%s%s", &_opt, &_ii, _x, _y);
此时该语句修改到了其他变量,所以本蒟蒻在此求助各位大佬,这行语句出现了什么玄学因素并且 sscanf 正确的读入 char 类型的方式如何写。
不是变量重名的原因因为更换变量名后问题没有得到解决。
更换了变量定义的顺序结果不变,说明不是野指针。
s 字符串的格式是 某大写字母 某小写字母 字符串 字符串。
我使用了 cout << &ans << ' ' << &_ii; 语句输出了这两个变量的地址,ans 的地址正常但是 &_ii 的地址输出却是字符串 s 中的前两个字符,并且直接输出 _ii 变量得到乱码。
此外,修改 ans 变量这个问题在将 _opt 及 _ii 变量改为 char 数组类型后得到解决。但是不知道为什么这样会修改 ans 变量。