将C字符数组读入双精度数

Ada*_*m S 2 c string scanf cstring

这是一个非常基本的问题,但我的C非常生疏,我需要复习.我有一个字符串,其格式完全相同:di ###.# ###.# ###.

我想读第一个数字d1,第二个进入d2,第三个进入d3.

int main ()
{
  double d1, d2, d3;
  char mystring[] = "di 123.4 567.8 901";

  //some code that I don't know

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?我知道strtod()可以帮助解析数字,但是如何在开头跳过"di"?

Chr*_*per 11

你可以使用sscanf:

sscanf(mystring, "di %lf %lf %lf", &d1, &d2, &d3);
Run Code Online (Sandbox Code Playgroud)

在这一行中,您将给出一个格式字符串(基本上布置您希望数字的位置),然后按顺序提供您希望将结果放入的变量的地址.该&运营商采取任何它被应用到的地址,在这种情况下是你的d1,d2d3变量.

(提供的引用位于C++站点上,但适用于此功能)