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

使用する

#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 に答える
2

必要なのは、開く前にファイル名 (パスを含む) を c-string に保存することです。開いているのは です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 に答える
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 に答える