Не записывается информация в файл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание таково:Вложение 529040
#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;
}
Проблема в том, что после получения имя в первой функции, я не могу открыть с помощью этого имени в функции main этот файл. Не понимаю в чем проблема

Решение задачи: «Не записывается информация в файл»

textual
Листинг программы
if (q == NULL)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы