Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/46: Рейтинг темы: голосов - 46, средняя оценка - 4.52
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
#1

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

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

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

Добавлено через 1 час 1 минуту
Разве никто не знает???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2010, 22:26
Ответы с готовыми решениями:

Передача файла в функцию в качестве параметра
Здравствуйте! Подскажите, как передать файловый поток в функцию? int...

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

Передача функции в качестве параметра
Как передать функцию с параметрами в transform? Т.е., например, мне надо из...

Передача функции в качестве параметра
#include <iostream> #include <math.h> using namespace std; double...

Функции, передача массива в качестве параметра
Приветствую) Собственно, есть простенькое задание с двумерными массивами, оно...

13
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
11.03.2010, 22:29 #2
Без проблем
C++
1
void func (char*,  char*) {}
Усё. Теперь , когда будешь вызывать функцию func, передавай ей в качестве параметров укзатель на стоку- имя файла и указательно строку имя переменной типа такая-то структура.
Привет.
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 22:37  [ТС] #3
Можете пример привести.
0
лендер
47 / 47 / 10
Регистрация: 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
1159 / 964 / 83
Регистрация: 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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
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
888 / 782 / 186
Регистрация: 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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
11.03.2010, 22:57 #8
Очень просто.
Для начала запомни. Никаких массивов не передаётся никуда.
Передаются АДРЕСА на эти массивы

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

Всё! Пиши давай!
0
Day
1159 / 964 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
11.03.2010, 23:00 #9
Тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
fun2(FILE *f, MYSTRUCT *p, int n)
{
  ....
}
main()
{ MYSTRUCT ss[10]; FILE *F;
   ...
   F = fopen(name, "r");
   ...
   fun2(F, ss, 10);
}
0
MILAN
888 / 782 / 186
Регистрация: 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
1159 / 964 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
11.03.2010, 23:12 #11
MILAN, похоже на правду не считая пары описок, но это ерунда - компилятор поправит!
Только некчему pfile в WriteFile передавать. Он - ее собственная переменная (в твоем коде)
1
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2010, 23:26  [ТС] #12
day, подскажите как в файл записать елементи масива структур, функция fscanf чето невиходит. Делаю так:

C
1
fscanf(pfile,"%s",a[1].color);
Програма запускается, и сразу закрывается.
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3546 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
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Эксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,321
12.03.2010, 01:42 #14
Мало того! Как-то по-моему не правильно в функции файл закрывать. Либо передавать в функцию указатель на открытый файл, функция с ним сделает, что должна, и оставит открытым. А в вызывающей функции ( в той, в которой собственно файл открывался ), его и закрывать. Либо передавать в функцию строкой имя файла, а уж она сама его откроет, сделает, что нужно, закроет и результат своей работы вернёт ( обычно 0 = удачно )...
0
12.03.2010, 01:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2010, 01:42

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

Передача массива в функцию в качестве параметра
Всем привет! Файл с реализацией: int Init_can::Send(int* msgdata) {...

Передача CString в качестве параметра функции
Добрый всем вечер! Мучает один вопрос, на который не могу найти ответ. Как...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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