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

时间:2015-03-04 07:07:59

标签: c string

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

2 个答案:

答案 0 :(得分:2)

  1. 使用fgets()读取文件中的行。
  2. 使用空格作为分隔符,使用strtok()将行拆分为标记。
  3. 使用strtod()
  4. 将字符串转换为double

答案 1 :(得分:2)

这样的事情会起作用。

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

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