2014-04-08 54 views
3

我想在目錄內創建一個目錄和一個文件。下面是我在C代碼,但是當我嘗試編譯它,我得到這個錯誤:invalid operands to binary/(have ‘const char *’ and ‘char *’)在一個目錄內創建文件(C)

char *directory = "my_dir"; 

struct stat dir = {0}; 
if(stat(directory, &dir) == -1) 
{ 
    mkdir(directory, 0755); 
    printf("created directory testdir successfully! \n"); 
} 

int filedescriptor = open(directory/"my_log.txt", O_RDWR | O_APPEND | O_CREAT); 
if (filedescriptor < 0) 
{ 
    perror("Error creating my_log file\n"); 
    exit(-1); 
} 

感謝您的幫助

+0

你/是嚴重置於打開(目錄 「/my_log.txt」,O_RDWR使用文件路徑| O_APPEND | O_CREAT); – Alexis

+0

你的意思是這樣的:int filedescriptor = open(directory「/my_log.txt」,O_RDWR | O_APPEND | O_CREAT); – TonyGW

回答

5

用sprintf()或類似創建pathFilename字符串:

char pathFile[MAX_PATHNAME_LEN]; 
sprintf(pathFile, "%s\\my_log.txt", directory); 

然後

int filedescriptor = open(pathFile, O_RDWR | O_APPEND | O_CREAT); 

:如果您使用的是Linux,改變\\/和MAX_PATHNAME_LEN 260(或任何Linux的喜歡使用該值。)

編輯如果您需要檢查目錄前存在創建文件在那裏,你可以做這樣的事情:

if (stat("/dir1/my_dir", &st) == -1) { 
    mkdir("/dir1/my_dir", 0700); 
} 

在這裏閱讀更多:statmkdir

+0

謝謝,但是這會創建一個名爲「my_dir \ my_log.txt」的文件,文件my_log.txt不在文件夾test_dir中。它也不會創建文件夾「my_dir」。 – TonyGW

+0

@Tony - 你在創建文件之前檢查目錄是否存在?看我的編輯到我的意思答案。 – ryyker

+0

非常感謝ryyker!這個對我有用 :) – TonyGW

1

你應該做的事情,如:

char *filepath = malloc(strlen(directory) + strlen("my_log.txt") + 2); 
filepath = strcpy(filepath, directory); 
filepath = strcat(filepath, "/my_log.txt"); 

,然後在打開的功能

相關問題