У меня есть текстовый файл типа
19.39825343760206 , -99.20035242455288
19.402068553663323, -99.18884038346096
19.412830341813137, -99.18181299584194
19.420813944440887, -99.17626082318111
19.421929492669275, -99.17060940878673
19.423626831405098, -99.16279076950832
19.42586547013487, -99.15465428846164
19.427341437102363, -99.14900153296276
19.42677988826859, -99.14223767237945
19.426539585246708, -99.13745395260139
19.425789584581995, -99.13291163163467
19.42548983629902, -99.12465713339134
19.428912245829306, -99.11943755464836
19.430273095215284, -99.11480135636612
19.42715425437469, -99.10933367328926
19.423242338939442, -99.10226739363952
Как я могу прочитать второе значение каждой строки, а затем вычесть значение в следующей строке, а затем распечатать его, как:
(-99.20035242455288) - (-99.18884038346096)
(-99.18884038346096) - (-99.18181299584194)
(-99.18181299584194) - (-99.17626082318111)
...
(-99.10933367328926) - (-99.10226739363952)
??
Я выполнял функцию, подобную следующей, но не знаю, как сохранить первое значение, а затем значение во второй строке .... Также как сказать C, что я хочу второе значение (разделенноезапятая)
void read_second_value (const char* file_name)
{
FILE* file = fopen (file_name, "r");
double i = 0;
double i_plus_1 = 0;
fscanf (file, "%f", &i);
while (!feof (file))
{
printf ("%f ", i);
fscanf (file, "%f", &i);
}
fclose (file);
}
но я пробовал решение типа:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* file_name = "C:\\test.txt";
FILE* fp = NULL;
double left_value, right_value = 0.0, prev_value = 0.0;
if ((fp = fopen (file_name, "r")) == NULL) {
printf ("FILE OPEN ERROR: %d\n", errno);
exit (1);
}
if (fscanf (fp, "%lf, %lf", &left_value, &right_value) != 2)
printf ("WARNING: failed to read two values...\n");
else
printf ("left_value: %lf, right_value: %lf ", left_value, right_value);
while (!feof (fp))
{
prev_value = right_value;
if (fscanf (fp, "%lf, %lf", &left_value, &right_value) != 2)
printf ("WARNING: failed to read two values...\n");
else {
printf ("left_value: %lf, right_value: %lf ", left_value, right_value);
printf ("%lf - %lf = %lf\n", prev_value, right_value, prev_value - left_value);
}
}
fclose (fp);
return 0;
}
, но получаю бесконечное
ПРЕДУПРЕЖДЕНИЕ: не удалось прочитать два значения ...