Помощь - Поиск - Пользователи - Календарь
Полная версия: Подключение файла с исх. данными в C/C++
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Account
Нужен совет в следующем:
Есть исходные данные таблица содержит значение x и y. Данные значения будут использоваться при вычислении. Как организовать их хранение в отдельном файле (чтоб файл можно было редактировать по необходимости, менять значения например с помощью блокнота), ппотом использовать в программе, для считывания. НУжен совет по использованию финкций считывания данных. Посмотрел в доках предположил что можно использовать fread() И fwrite(), но интересно ведь данные функции считывают по размерно, возможно в данном случае нормально в удобном виде распологать данные и их считывание?
volvo
Лучше храни обычный текстовый файл + читай его через fscanf (для C) или через ifstream (для С++)
Account
Цитата(volvo @ 5.07.2009 12:19) *

Лучше храни обычный текстовый файл + читай его через fscanf (для C) или через ifstream (для С++)


А возможно ли в нем храние вот в атком виде

Код
  
X       |     Y    |
0.23       1.50
-0.32      -1.72
....................

Между занчениями например табуляция
Возможно ли тогда считывание в таком виде каждого отдельного значени, и отрицательного тоже
в таком случе прочитает если написать вот так

double x,y;
fscanf(fp, "%g%g",&x,&y);
volvo
Проверь:
#include <conio.h>
#include <stdio.h>

int main()
{
double x, y;
char s[64];
FILE *f = fopen("dat.txt", "rt");
fgets(s, 63, f); // пропускаем заголовок файла

while(!feof(f)) {
fscanf(f, "%lg %lg\n", &x, &y);
printf("X = %lg; Y = %lg\n", x, y);
}
fclose(f);
return 0;
}
,

файл: Нажмите для просмотра прикрепленного файла
Account
volvo, все работает, спасибо)

а вот в команде
fscanf(f, "%lg %lg\n", &x, &y);


параметр %lg для считывания я так понял типа long double? И это наверное было расширено в c++ так как у меня вот в книге по С автр Г. Шилд указаны только %a, %e, %f, %g для работы с числами с плавующей точкой?
volvo
Цитата
параметр %lg для считывания я так понял типа long double?
Нет, это параметр g в scanf-е обозначает float, а у тебя double, это длинный float, поэтому надо добавить спецификатор L...
Account
Цитата(volvo @ 5.07.2009 13:09) *

Нет, это параметр g в scanf-е обозначает float, а у тебя double, это длинный float, поэтому надо добавить спецификатор L...


Все ясно, сапсибо)
Account
volvo, а не подскажешь вот что, как происходит раздельная компиляция блоков программы и сборка в C/C++, хочу сделать основной файл программы а остальные функции вынести в отдельные файлы чтоб можно было их компилить и проверять отдельно.

например, есть у меня основная функция

Основной файл prog:

#include <stdio>
#include <iostream>
#include <fc> /* это я просто предположил*/

int func() ; /* и это*/


int main()
{

func();
return 0;
}



И файл с функцияей fc:

#include <stdio>
#include <iostream>

int func()
{
cout<<"Hello World!!"
return 0;
}
volvo
Нет. Include-ить желательно только заголовочные H-файлы, реализацию в виде CPP надо подключать к проекту: "Project->Add files...", и потом собирать проект. Линкер сам найдет и подключит нужные объектные файлы.
Account
Цитата(volvo @ 5.07.2009 14:39) *

Нет. Include-ить желательно только заголовочные H-файлы, реализацию в виде CPP надо подключать к проекту: "Project->Add files...", и потом собирать проект. Линкер сам найдет и подключит нужные объектные файлы.


А если я просто создавал вот через New-->Empty file, два разных файла, а не проект, как их связать?
volvo
Создать проект и связать.
Account
После недолгой эксперементализации, чтоб не придумывать велосипед, так и было сделано, создан проект и добавлен файл))))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.