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

C语言中sscanf可读取int但无法读取double的问题求解

问题原因

你使用的sscanf格式串和源字符串的分隔规则不匹配:源字符串中各个数值用逗号+空格分隔,但你写的格式串"%d %lf %lf %lf"仅用空格作为分隔标记。
sscanf读取完第一个int类型的1之后,下一个待匹配字符是逗号,不符合%lf要求的数值格式,直接终止匹配流程,后续三个double变量没有被赋值,保留了初始的0值。

解决方案

修改sscanf的格式串,增加对逗号分隔符的匹配即可,可选两种写法:

  • 精确匹配当前的逗号+空格分隔格式:
sscanf(myString, "%d, %lf, %lf, %lf", &(myStruct->I1), &(myStruct->D1), &(myStruct->D2), &(myStruct->D3));
  • 适配分隔符前后可能存在的任意数量空白(比如空格、制表符),兼容性更强:
// 格式串中的空格可以匹配0个或多个任意空白字符
sscanf(myString, "%d , %lf , %lf , %lf", &(myStruct->I1), &(myStruct->D1), &(myStruct->D2), &(myStruct->D3));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:04