我有一个字符串,但我不知道它的长度,因为我从一个文件中读取。 (我必须这样做,所以请不要告诉我其他的读法)我想从中读取所有的双号,但我不知道它有多少个数字。我想使用sscanf,但它不起作用,它总是读取第一个数字。想法?
答案 0 :(得分:2)
fgets()
读取文件中的行。strtok()
将行拆分为标记。strtod()
答案 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
)并自行移动。