Предположим, мы читаем файл, отформатированный таким образом, что каждая строка содержит два числа с плавающей запятой, первое число с плавающей запятой занимает первые 7 символов строки, а второе число с плавающей запятой занимает следующие 7 символов строки. Например:
1.111222.222
333.333 44.444
Учитывая этот пример кода
float a, b;
sscanf(" 1.111222.222", "%7f%7f", &a, &b);
printf("%f %f\n", a, b);
Следующий вывод:
1.111220 2.222000
7 символов не начинают отсчитываться до первого числа с плавающей запятой, пока пробел не будет пропущен. Есть ли способ разобрать эти поплавки и включить пробел в длину поплавка?
Лучшее, что я мог придумать, — это читать поплавки в виде строк, %7[^\n]
а затем проанализировать этот вход как число с плавающей запятой.
float a, b;
char a_buff[7 + 1];
char b_buff[7 + 1];
sscanf(" 1.111222.222", "%7[^\n]%7[^\n]", a_buff, b_buff);
sscanf(a_buff, "%f", &a);
sscanf(b_buff, "%f", &b);
printf("%f %f\n", a, b);
Других решений пока нет …