Создать каталог и сохранить выходные файлы в этом каталоге - PullRequest
0 голосов
/ 19 июня 2019

Я хочу создать каталог с именем переменной, например "folder Iteration Number %d, Iteration", и после этого сохранить вывод текста в эту папку.

Вот мой код, программа правильно создает каталог, но не сохраняет в нем файл, ошибка возникает в последней строке.

Я пробовал это

fp1 = fopen("D:\\Courses\\filename1.plt", "w"); 

Для последней строки, и она работает, но я хочу записать файл в определенную папку, которую я создал.

char directionname[120];
sprintf(directionname, "Profile Iteration Number_%d", it);
mkdir(directionname);
char filename1[120];
sprintf(filename1, "Velocity Profile Iteration_%d.plt", it);
FILE * fp1;
fp1 = fopen("D:\\Courses\\directionname\\filename1.plt", "w"); 

Ответы [ 3 ]

1 голос
/ 19 июня 2019

Заменить

  fp1 = fopen("D:\\Courses\\directionname\\filename1.plt", "w");

на

  char fullname[240];
  sprintf(fullname, "D:\\Courses\\%s\\%s", directionname, filename1);
  fp1 = fopen(fullname, "w");
0 голосов
/ 19 июня 2019
fp1 = fopen("D:\\Courses\\directionname\\filename1.plt", "w");

Как видно из вышесказанного, вы ожидаете, что directionname и filename1 будут заменены переменными с этими именами.Это не то, как работают строки.

Когда вы создаете каталог, у вас все в основном правильно, но вы, кажется, не попали в нужное место при запуске вашей программы, поэтому она создаст новуюкаталог в вашем текущем каталоге не в "D: \ Courses \".Таким образом, вы должны изменить directionname, чтобы включить полный путь к месту, где вы хотите новый каталог.

char directionname[120];
sprintf(directionname, "D:\\Courses\\Profile Iteration Number_%d", it);
mkdir(directionname);

И затем вы хотите добавить имя файла к этому значению, например

char filename1[120];
sprintf(filename1, "%s\\Velocity Profile Iteration_%d.plt", directionname, it);

filename1 теперь должен содержать что-то вроде «D: \ Courses \ Profile Iteration Number_1 \ Velocity Profile Iteration_1.plt», которое должно позволить вам открыть его примерно так ...

FILE * fp1;
fp1 = fopen(filename1, "w");
0 голосов
/ 19 июня 2019

Вы не используете directionname, который вы создали.

Я думаю, вы хотите что-то вроде:

char directionname[120];
sprintf(directionname, "Profile Iteration Number_%d", it);
mkdir(directionname);

char filename1[120];
sprintf(filename1, "Velocity Profile Iteration_%d.plt", it);

char filepath[120];
sprintf(filepath, "D:\\Courses\\%s\\%s", directionname, filename1);

FILE * fp1;
fp1 = fopen(filepath, "w"); 

if (!fp1)
    perror(filepath);
...