Написать функцию, которая открывает файлы и инициализирует указатели типа FILE вне функции - C (СИ)
Формулировка задачи:
Требуется написать функцию, которая открывает файлы и инициализирует указатели типа FILE вне этой функции.
В функции preWork файлы открываются нормально, но в main указатели файловые остаются неинициализированы.
Как это поправить? Код ниже.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ERR_OPEN_FILE 1
#define ERR_USE 2
#define SIZE_BUF 1024
void preWork(int count, char *input, char *output, FILE *in, FILE *out)
{
char ch;
if(count != 3){
puts("use: <name_prog> <input_file> <output_file>");
exit(ERR_USE);
}
in = fopen(input, "rb");
out = fopen(output, "wb+");
if(!in || !out){
puts("Error open file.");
exit(ERR_OPEN_FILE);
}
}
int main(int argc, char *argv[])
{
FILE *in = NULL, *out = NULL;
preWork(argc, argv[1], argv[2], in, out);
return 0;
}Решение задачи: «Написать функцию, которая открывает файлы и инициализирует указатели типа FILE вне функции»
textual
Листинг программы
void preWork(int count, char *input, char *output, FILE **in, FILE **out){
// ...
*in = fopen(input, "rb");
*out = fopen(output, "wb+");
}
int main() {
// ...
preWork(argc, argv[1], argv[2], &in, &out);
// ...
return 0;
}
Объяснение кода листинга программы
- В функции
preWorkоткрываются файлыinputиoutputс помощью функцииfopenи сохраняются указатели на эти файлы в переменные*inи*outсоответственно. - В функции
mainвызывается функцияpreWorkс аргументамиargc,argv[1]иargv[2], а также указателями на указателиinиout. - После выполнения функции
preWorkуказателиinиoutбудут содержать открытые файлы.