Си, работа с файлами, помогите плз!
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Си, работа с файлами, помогите плз! Expand / Collapse
Автор
Сообщение
11.04.2007 16:28
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 11.04.2007 21:04
Сообщ.: 1, Visits: 8
Проблема следущая: нужна программа которая считывает числа типа double из файла (в моем случае это индексы валютного курса) и записывает их в массив double A[n].

т.е есть файлик примерно с таким содержанием:
31,7101
31,784
31,8214
31,8352
31,835
31,8351
31,8354
31,8517

как сделать чтобы данные в массив типа DOUBLE с него читались так:
A[0]=31,7101
A[1]=31,784
A[2]=31,8214
...

извините за ламерский вопрос, я вообще не программист, просто мне по диплому очень надо...
Сообщ. #912388
13.04.2007 12:03


Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 30.06.2007 8:03
Сообщ.: 28, Visits: 42
ну для начала нужно знать что является разделителем целой и дробной частей.
если как у вас это запятая, то тогда открываем файлик (fopen) с режимом для чтения(чтения/записи) и читаем (fgets) и преобразуем строку в double (atof).

или нужен прям Текст рабочей программы?
Сообщ. #912421
13.04.2007 12:09
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
написано же, что автор топика - не программист, конечно нужен текст рабочей программы :)

вопрос: известно ли изначально количество чисесл в файле? или программа должна сама определить это? (не то чтобы я уже взялся ваять пример, но ответ на этот вопрос может повлиять на алгоритм решения :)
Сообщ. #912424
14.04.2007 2:52


Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 30.06.2007 8:03
Сообщ.: 28, Visits: 42

#include
#include

#define FILE_NAME "data.txt"

int main(int argc, char** argv) {
FILE *fFile = NULL;
char szData[20];
unsigned int ValCount = 0;
double *dVal = NULL;
fpos_t filepos;

fFile = fopen(FILE_NAME, "r");
fgetpos(fFile, &filepos);
if (!fFile) return 1;

while (1) {
if (!fgets(szData, sizeof(szData), fFile))
break;
ValCount++;
}

fsetpos(fFile, &filepos);

dVal = (double*)malloc(sizeof(double)*ValCount);

for (unsigned int i = 0; i < ValCount; ++i) {
fgets(szData, sizeof(szData), fFile);
dVal[i] = atof(szData);
printf("%f", dVal[i]);
}
free(dVal);
fclose(fFile);
return 0;
}
Сообщ. #912453
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 4:25