关于sscanf的输入方式
  • 板块灌水区
  • 楼主lbdontknow
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/2/28 00:28
  • 上次更新2024/2/28 14:57:08
查看原帖
关于sscanf的输入方式
664908
lbdontknow楼主2024/2/28 00:28

当 sscanf 输入 char 类型的变量时, 我使用了 &s 作为格式化的参数,整体如下。

string s;
int ans = 1;


//若干代码


char _opt, _ii, _x[10], _y[10];
//ans == 1
sscanf(s.c_str(), "%s%s%s%s", &_opt, &_ii, _x, _y);
//ans == 0?????????????????????????????????????????/
//MD ans不知道为什么被改了

此时该语句修改到了其他变量,所以本蒟蒻在此求助各位大佬,这行语句出现了什么玄学因素并且 sscanf 正确的读入 char 类型的方式如何写。
不是变量重名的原因因为更换变量名后问题没有得到解决。
更换了变量定义的顺序结果不变,说明不是野指针。
s 字符串的格式是 某大写字母 某小写字母 字符串 字符串。
我使用了 cout << &ans << ' ' << &_ii; 语句输出了这两个变量的地址,ans 的地址正常但是 &_ii 的地址输出却是字符串 s 中的前两个字符,并且直接输出 _ii 变量得到乱码。

此外,修改 ans 变量这个问题在将 _opt 及 _ii 变量改为 char 数组类型后得到解决。但是不知道为什么这样会修改 ans 变量。

2024/2/28 00:28
加载中...