2015-01-11 2 views
0

Как вы можете прочитать файл с неизвестной длиной строки (около 1500 строк, поэтому нет необходимости в malloc/alloc и т. Д., Потому что памяти достаточно ... к счастью, потому что я еще не понимаю эти команды массива/указателя) включая числа с плавающей запятой, знаки и буквы, извлекать из него определенные числа, выполнять некоторые вычисления и записывать их обратно в другой файл?Как читать из неизвестного файла, включая цифры, буквы и символы?

Три примеры линий:

02060 6.1 0.15 K14C9 134.52612 339.34971 209.27800 6.93836 0.3820989 0.01956864 13.6383665 0 MPO319108 1304 45 1895-2014 0.53 M-v 38h MPCLINUX 000A (2060) Chiron    20141030 
05145 7.1 0.15 K14C9 90.96884 354.94362 119.25398 24.73205 0.5736395 0.01074547 20.3385073 0 MPO169571 319 21 1977-2009 0.58 M-v 38h MPCMEL  400A (5145) Pholus    20090418 
07066 9.6 0.15 K14C9 67.95075 170.25614 31.23622 15.65639 0.5195581 0.00813869 24.4774642 1 MPO135426 105 9 1993-2004 0.48 M-v 38h MPCW  400A (7066) Nessus    20040526 
+0

'FILE * f, * g; \t f = fopen ("MPCORB_Distant.txt", "r"); \t g = fopen ("MPCORB_Distant_AvgKBOValues.txt", "w"); \t double Nbr, H, G, Epoch, M, w, W, i, e, n, a, UP, Ref, Obs, Opp, Arc, rms, Pert1, Pert2, Comp, Type, Name, LastObs; \t double Res_a, Res_e, Res_i, Res_W, Res_w; \t int c; \t \t в то время как ((с = fgetc (е))! = EOF) \t { \t \t fscanf (е, "% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% Л.Ф.% lf% lf% lf% lf% lf% lf% lf% lf% lf% lf% lf% lf% lf \ n ", & Nbr, & H, & G, & Epoch, & M, & w, & W, & i, & e, & n, & a , & UP, & Ref, & Obs, & OPP, & Arc, & эфф, & Pert1, & Pert2, & Comp, & Type, & Name, & LastObs); \t \t fprintf (g, "%. 8lf% .8lf% .8lf% .8lf% .8lf \ n", w, W, i, e, a); \t} fclose (f); \t fclose (g); 'что не так? – Lucas

+0

Значения, которые мне нужны, находятся в правильном порядке при сравнении строк кода и примера в начальном вопросе. Я вижу некоторые из этих значений, но в печатных строках в основном повторяются повторы, а также некоторые произвольные числа. – Lucas

ответ

0

Добро пожаловать! Включение вашего существующего кода всегда является хорошей идеей, поэтому благодарим за это. Тем не менее, это помогло бы увидеть это как часть вопроса. Не могли бы вы отредактировать вопрос, чтобы включить свой код, и отформатировать его также хорошо?

Одна проблема, которую я вижу, с правильным использованием formatting strings в вашем fscanf() вызова. Вы всегда указываете %lf, но это подходит только для значений double, и вам также необходимо проанализировать целые числа и строки.

Смежные вопросы