Не записывается информация в файл - C (СИ)
Формулировка задачи:
Задание таково:Вложение 529040
Проблема в том, что после получения имя в первой функции, я не могу открыть с помощью этого имени в функции main этот файл. Не понимаю в чем проблема
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<locale.h>
char *nn_base(char* argv[])
{
char *na = argv[0];
char *name_file;
char *re_base = "new_base.dat";
char *re_base_db = "DB = new_base.dat";
char * pch = strtok(na, "\\"); // во втором параметре указаны разделитель (пробел, запятая, точка, тире)
while (pch != NULL) // пока есть лексемы
{
name_file = pch;
pch = strtok(NULL, "\\");
}
name_file = strtok(name_file, ".");
name_file = strcat(name_file, ".cfg");
FILE *n_konfig;
char st_f[200];
n_konfig = fopen(name_file, "r");
if (n_konfig == NULL)
{
perror("Созданы новый файл конфигурации, и новая база данных");
FILE *n_konfig1;
n_konfig1 = fopen(re_base, "w");
fclose(n_konfig1);
printf("%s%s\n", "Имя новой базы данных: ", re_base);
n_konfig1 = fopen(name_file, "w");
fprintf(n_konfig1, re_base_db);
fclose(n_konfig1);
printf("%s%s\n", "Имя нового файла конфигурации: ", name_file);
return re_base;
}
else
{
while (!feof(n_konfig))
{
fgets(st_f, sizeof(st_f), n_konfig);
if (st_f[0] == 'D')
{
break;
}
}
}
char *c, *name_base;
c = strtok(st_f, " ");
while (c != NULL) // пока есть лексемы
{
name_base = c;
c = strtok(NULL, " ");
}
FILE *n_open_base;
name_base = strtok(name_base, "\n");
n_open_base = fopen(name_base, "rb");
if (n_open_base == NULL)
{
n_open_base = fopen(name_base, "wb");
printf("%s%s\n", "Создана новая база данных: ", name_base);
fclose(n_open_base);
}
return name_base;
}
int main(int argc, char* argv[])
{
setlocale(LC_CTYPE, "rus");
char *a = nn_base(argv);
printf("n%s\n", a);
FILE * q;
q = fopen(a, "rb");
if (q = NULL)
perror("Файл не открыт");
fwrite(a, sizeof(a), 1, q);
fclose(q);
system("PAUSE");
return 0;
}Решение задачи: «Не записывается информация в файл»
textual
Листинг программы
if (q == NULL)