2016-05-06 6 views
0
void my_create(char* path) 
{ 
    FILE* fp; 
    fp = fopen(path, "rb+"); 
    if (fp == NULL) /* File doesn't exist*/ 
     fp = fopen(path, "wb"); 
} 

なぜ機能しないのですか?または私は間違った道を与えられて何か間違っているのですか? わからない。ファイルが存在しない場合、指定されたパスにテキストファイルを作成する方法

ありがとうございます。

+0

fp = fopen(path、 "w +");読み書きのための空のファイルを作成することができます。 – tigris

+0

@tigris wbの代わりにw +を使用するとコードが機能しますか? –

+0

関数はどのように呼び出されますか? – sjsam

答えて

0

ファイル名が許可されていないか、アクセス権の問題が発生している可能性があります。

このお試しください:私がチェックしたファイルは、fopenので存在するかと思ういけない

#include <string.h> 
#include <errno.h> 

void my_create(char* path) 
{ 
    FILE* fp; 
    fp = fopen(path, "rb+"); 
    if (fp == NULL) { /* File doesn't exist*/ 
     printf ("File does not exist : %s", path) 
     fp = fopen(path, "wb+"); 
     if (fp == NULL) { 
      fprintf (stderr, "Cannot create file : %s\n", path); 
      fprintf (stderr, "Reason : %s" , strerror (errno)); 
     } 
    } 
} 
+0

'perror'や' strerror'を使って問題を診断することを提案してください。 –

0

は正しい方法です。 stat()を使用できます。

struct stat st = {0}; 
if (stat(path, &st) == -1) 
{ 
    FILE *fp = fopen(path, "w+"); 
    if (!fp) printf("Can not create file: %d\n", errno); 
    else fclose(fp); 
} 
関連する問題