Используйте sscanf для извлечения чисел без разделителя (используя только ожидаемую длину)

Предположим, мы читаем файл, отформатированный таким образом, что каждая строка содержит два числа с плавающей запятой, первое число с плавающей запятой занимает первые 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 символов не начинают отсчитываться до первого числа с плавающей запятой, пока пробел не будет пропущен. Есть ли способ разобрать эти поплавки и включить пробел в длину поплавка?

0

Решение

Лучшее, что я мог придумать, — это читать поплавки в виде строк, %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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]