创建目录并将输出文件保存在该目录中

时间:2019-06-19 13:55:51

标签: c windows string-concatenation c-strings

我想创建一个变量名称为"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 个答案:

答案 0 :(得分:1)

替换此

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

作者

  char fullname[240];
  sprintf(fullname, "D:\\Courses\\%s\\%s", directionname, filename1);
  fp1 = fopen(fullname, "w");

答案 1 :(得分:0)

您不使用创建的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);

答案 2 :(得分:0)

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

从以上看来,您期望directionnamefilename1被具有这些名称的变量替换。这不是字符串的工作方式。

在创建目录时,大多数情况都是正确的,但是在运行程序时,您似乎不在正确的位置,因此它将在当前目录中的“ D:\”下创建新目录。课程\”。因此,您应该更改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");