Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.61
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
#1

Передача файла в качестве параметра - C++

11.03.2010, 22:26. Просмотров 6480. Ответов 13
Метки нет (Все метки)

Как, в качестве параметра, передать функции файл и структуру???

Добавлено через 1 час 1 минуту
Разве никто не знает???
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2010, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача файла в качестве параметра (C++):

Передача файла в функцию в качестве параметра - C++
Здравствуйте! Подскажите, как передать файловый поток в функцию? int main() { ifstream fin("my file.txt"); ... ...

Передача файла в функцию в качестве параметра - C++
Имеется такой код, который, по идее, должен создавать файл с записями и кое-как их потом преобразовывать. Проблема в том, что файл не...

Передача функции в качестве параметра - C++
Как передать функцию с параметрами в transform? Т.е., например, мне надо из каждого числа вектора вычесть число k с помощью transform'а,...

Передача массива в функцию в качестве параметра - C++
Всем привет! Файл с реализацией: int Init_can::Send(int* msgdata) { //Send canmsg_t tx; ULONG ulWritten; ...

Передача CString в качестве параметра функции - C++
Добрый всем вечер! Мучает один вопрос, на который не могу найти ответ. Как наилучшим образом передавать объект класса CString в...

Функции, передача массива в качестве параметра - C++
Приветствую) Собственно, есть простенькое задание с двумерными массивами, оно выполнено: #include <iostream.h> #include <conio.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
11.03.2010, 22:29 #2
Без проблем
C++
1
void func (char*,  char*) {}
Усё. Теперь , когда будешь вызывать функцию func, передавай ей в качестве параметров укзатель на стоку- имя файла и указательно строку имя переменной типа такая-то структура.
Привет.
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 22:37  [ТС] #3
Можете пример привести.
0
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
11.03.2010, 22:38 #4
нужно что-то типа такого?
C
1
2
3
4
5
6
7
8
9
typedef struct mystruct {
.....
} STRUCT ;
 
........
 
void func (FILE *f,SRTUCT name_struct){
....
}
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
11.03.2010, 22:39 #5
MILAN, Можно и так:
C
1
2
3
4
5
6
7
8
9
10
11
fun(FILE *f, MYSTRUCT *p)
{
  ....
}
main()
{ MYSTRUCT s; FILE *F;
   ...
   F = fopen(name, "r");
   ...
   fun(F, &s);
}
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
11.03.2010, 22:46 #6
Цитата Сообщение от MILAN Посмотреть сообщение
Можете пример привести.
Да без проблем, брат
C++
1
2
3
4
5
6
7
#include <stdio.h>
#include "fail_1.cpp"
void func (char*,  char*) {};
int main(){
  func ("ima_faila", "ima_strukt");
  return 0;
}
Кстати. Вопрос, ЧТО ИМЕННО будет делать функция со своими параметрами- не задавался....
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 22:52  [ТС] #7
Цитата Сообщение от Day Посмотреть сообщение
MILAN, Можно и так:
Код
fun(FILE *f, MYSTRUCT *p)
{
  ....
}
main()
{ MYSTRUCT s; FILE *F;
   ...
   F = fopen(name, "r");
   ...
   fun(F, &s);
}
А как паредать масив структур?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
11.03.2010, 22:57 #8
Очень просто.
Для начала запомни. Никаких массивов не передаётся никуда.
Передаются АДРЕСА на эти массивы

ТО есть ты объявляешь структуру.
Птом объявляешь массив из таких вот структур.
Потом берёшь адрес этого массива и передаёшь его ы функцию

Всё! Пиши давай!
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
11.03.2010, 23:00 #9
Тогда так
Код
fun2(FILE *f, MYSTRUCT *p, int n)
{
  ....
}
main()
{ MYSTRUCT ss[10]; FILE *F;
   ...
   F = fopen(name, "r");
   ...
   fun2(F, ss, 10);
}
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 23:05  [ТС] #10
Так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <string>
# define kil 5
 struct cars
{
    std::string marka;
    std::string year;
    std::string color;
    std::string number;
}; //car[kil],*pcar=&car[0],*pc=&car[kil];
void WriteFile(FILE *pfile, cars *p, int n);
FILE *pfile;
car s;
int main()
    
{   cars a[kil];
    WriteFile(pfile,a,kil);
    return 0;
}
void WriteFile(FILE *pfile, cars *p, int n)
{   
    pfile= fopen("d:\\infocar0.txt","w");
    fscanf(pfile,"%s",car[1].color);
    fclose(pfile);
}
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
11.03.2010, 23:12 #11
MILAN, похоже на правду не считая пары описок, но это ерунда - компилятор поправит!
Только некчему pfile в WriteFile передавать. Он - ее собственная переменная (в твоем коде)
1
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 23:26  [ТС] #12
day, подскажите как в файл записать елементи масива структур, функция fscanf чето невиходит. Делаю так:

C
1
fscanf(pfile,"%s",a[1].color);
Програма запускается, и сразу закрывается.
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
12.03.2010, 00:57 #13
Цитата Сообщение от MILAN Посмотреть сообщение
C
1
2
3
4
5
6
void WriteFile(FILE *pfile, cars *p, int n)
{
    pfile= fopen("d:\\infocar0.txt","w");
    fscanf(pfile,"%s",car[1].color);
    fclose(pfile);
}
Я плохо знаю С, но что то мне кается вы напутали. Вы открываете файл для записи, а потом пытаетесь фсканфом что-то считать оттуда. Вот исправленное
C
1
2
3
4
5
6
void WriteFile(FILE *pfile, cars *p, int n)
{
    pfile= fopen("d:\\infocar0.txt","w");
    fprintf(pfile,"%s",car[1].color);
    fclose(pfile);
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
12.03.2010, 01:42 #14
Мало того! Как-то по-моему не правильно в функции файл закрывать. Либо передавать в функцию указатель на открытый файл, функция с ним сделает, что должна, и оставит открытым. А в вызывающей функции ( в той, в которой собственно файл открывался ), его и закрывать. Либо передавать в функцию строкой имя файла, а уж она сама его откроет, сделает, что нужно, закроет и результат своей работы вернёт ( обычно 0 = удачно )...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2010, 01:42
Привет! Вот еще темы с ответами:

Передача класса в качестве параметра шаблона - C++
Имеется два класса, один это однонаправленный итератор, другой это двунаправленный. Двунаправленный получается из однонаправленного. Вот...

Передача функции с двумерным массивов в качестве параметра - C++
Всем доброго времени суток. У меня проблема следующего плана. Есть некая функция void Get_from_file(Rect rectangle, int sizeY) из...

Передача члена класса в качестве параметра метода - C++
Добрый день. Интересует следующий вопрос: как передать член класса как параметр по значению в метод того же класса? То есть необходимо,...

Передача двумерного динамического массива в функцию в качестве параметра - C++
Вообщем надо сложить и умножить две матрицы, но сделать это в отдельных функциях. Матрицы заданы динамическими массивами размерами n*m и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.03.2010, 01:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru