Поэтому, когда я пытаюсь записать в файл, я получаю сообщение об ошибке Место записи о нарушении прав доступа , а значения из массива int плохо передаются в solve
функция, насколько я вижу.
void read(int n, int* v);
int prime(int);
void solve(int n, int x, int* v, FILE*);
void open_file_write(char*, FILE*);
void main()
{
int n, i, x, k, *v;
FILE* fp = NULL;
char s[30];
n = 7;
open_file_write(s, fp);
v = new int[n];
read(n, v);
x = v[n / 2];
solve(n, x, v, fp);
delete[](v);
if (fp)
fclose(fp);
else exit(1);
}
void solve(int n, int x, int* v, FILE* fp)
{
int i, k = 0;
float ma = 0;
for (i = 0; i < n; i++)
if (v[i] < x && prime(v[i]))
{
printf_s("%d ", v[i]);
k++;
ma += v[i];
fprintf_s(fp, "%d ", v[i]);
}
printf_s("\n%f ", ma / k);
}
void read(int n, int* v)
{
int i;
for (i = 0; i < n; i++)
scanf_s("%d", &v[i]);
}
int prime(int x)
{
int i;
if ((!(x % 2) && x != 2) || x == 1 || x == 0)
return 0;
else if (x == 2)
return 1;
for (i = 3; i * i < x; i++)
{
if (!(x % i))
return 0;
}
return 1;
}
void open_file_write(char* file_name, FILE* fp)
{
errno_t err;
printf_s("Enter the name of your destination file: ");
scanf_s("%s", file_name, 100);
if ((err = fopen_s(&fp, file_name, "w") != 0)) //opening destination file
{
puts("Error opening destination file");
_getch();
exit(1);
}
}