You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sscanf按分隔符拆分字符串?从7b-7a中提取7b

解决sscanf提取'-'前字符串的问题

你的代码问题在于%s会匹配所有非空白字符,而-不属于空白字符,所以第一个%s直接把整个7b-7a都读进了out,后面的-%s完全没起作用,还因缺少对应变量导致未定义行为。

要提取-之前的7b,可以用%[^-]格式说明符,它的作用是匹配所有不是'-'的字符,直到遇到'-'为止:

char str[32] = "7b-7a";
char out[32];
// 读取所有非'-'的字符到out
sscanf(str, "%[^-]", out);
std::cout << out; // 输出7b

补充说明

  • 如果字符串开头就是-,out会被设为空字符串;
  • 可以指定最大读取长度增强安全性,比如%31[^-](给out的结束符\0留一位):
    sscanf(str, "%31[^-]", out);
    

内容的提问来源于stack exchange,提问作者inpotk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:17:11