繁体   English   中英

从长度未知的字符串中读取所有双精度数字

[英]Reading all double number from string which length is unknown

我有一个字符串,但是我不知道它的长度,因为我从文件中读取。 (我必须这样做,所以请不要以其他方式告诉我)我想从中读取所有双精度数字,但是我不知道它有多少数字。 我想使用sscanf,但是它不起作用,它总是读取第一个数字。 想法?

  1. 使用fgets()从文件中读取行。
  2. 使用strtok()以空格作为分隔符strtok()将行分成令牌。
  3. 使用strtod()将字符串转换为double

这样的事情会起作用。

const char *p = str;
double d;
int n;
while (sscanf(p,"%lf%n",&d,&n) == 1) {
    // do something with d
    p += n;
}

sscanf出现问题的原因是因为它不会自动移动提供的缓冲区,您必须询问它已读取了多少个字符( %n )并自己移动了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM