3

我的第一篇文章 :),我从 C 语言开始,作为进入编程领域的基本学习步骤。我正在使用以下代码从文本文件中读取字符串,使用该字符串名称创建目录并打开一个文件以写入该创建的目录。但我无法在制作的目录中创建文件,这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
#include <string.h>

int main()
{
    char file_name[25], cwd[100];
    FILE *fp, *op;

    fp = fopen("myfile.txt", "r");

    if (fp == NULL)
    {
        perror("Error while opening the file.\n");
        exit(EXIT_FAILURE);
    }

    fgets(file_name, 25, fp);

    _mkdir(file_name);

       if (_getcwd(cwd,sizeof(cwd)) != 0) 
    {
      fprintf(stdout, "Your dir name: %s\\%s\n", cwd,file_name);

        op = fopen("cwd\\file_name\\mynewfile.txt","w");
        fclose(op);
    }
    fclose(fp);
    return 0;
}
4

4 回答 4

2

您需要在打开之前将文件名(带有路径)存储在 c 字符串中。你打开的是cwd\file_name\mynewfile.txt. 我怀疑您的目录名为cwd. 样本可能是:

char file_path[150];
sprintf(file_path, "%s\\%s\\mynewfile.txt", cwd, file_name);
op = fopen(file_path,"w");
于 2013-03-14T06:19:20.787 回答
2

采用

#include <sys/stat.h>
#include <sys/types.h>

代替

#include <direct.h>

并修改

op = fopen("cwd\\file_name\\mynewfile.txt","w”);
于 2013-03-14T06:31:11.360 回答
1

我看到您正在使用返回值。这对初学者来说是一个好的开始。您可以通过包含“errno.h”来优化您的错误消息。而不是打印您自己的错误消息调用

printf("%s", strerror(errno));

这样你会得到更精确的错误信息。

于 2013-03-14T06:25:47.953 回答
0

op = fopen("cwd\\file_name\\mynewfile.txt","w”);

您实际上是在将字符串文字“cwd”和“file_name”作为文件路径的一部分传递,而我认为您实际上是要将具有这些名称的变量的内容放在那里。您可能必须为路径拼凑一个字符串。尝试查看 strcat()

http://www.cplusplus.com/reference/cstring/strcat/

于 2013-03-14T06:19:22.360 回答