2013-04-22 66 views
4

我已经找到了一种方法来做我想做的事情,但它看起来很脏。我只想做一个简单的事情如何在特定目录中创建文件

sprintf(serv_name, "Fattura-%i.txt", getpid()); 
    fd = open(serv_name, PERMISSION | O_CREAT); 
    if (fd<0) { 
     perror("CLIENT:\n"); 
     exit(1); 
    } 

我想,新的文件,在我的程序的目录,而不是被创建,它直接创建一个子目录。例如我的文件在./program/我希望这些文件将被创建./program/newdir/

我试图直接把字符串“serv_name”,我想要的文件的路径,这是像

sprintf("./newdir/fattura-%i.txt",getpid()); 

也试过\\而不是/。如何才能做到这一点? ,我发现是,在节目的最后,唯一的方法,把一个:

mkdir("newdir",IPC_CREAT); 
system("chmod 777 newdir"); 
system("cp Fattura-*.txt ./fatture/"); 
system("rm Fattura-*.txt"); 

回答

2

试试这个,它的工作原理。我改变了:我用fopen代替open,我用snprintf代替sprints,因为它是更安全:

#include <stdio.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <stdlib.h> 

int main() { 
    char serv_name[1000]; 
    mkdir("newdir", S_IRWXU | S_IRWXG | S_IRWXO); 
    snprintf(serv_name, sizeof(serv_name), "newdir/Fattura-%i.txt", getpid()); 
    FILE* f = fopen(serv_name, "w"); 
    if (f < 0) { 
     perror("CLIENT:\n"); 
     exit(1); 
    } 
} 
+0

MMH IM不知道..我已经有没有告诉你,这是一个计划的一部分,其中文件,我们trin移动目录中,是一个文件,我从套接字..我不知道我是否可以使用fopen没有风险 – ReTanica 2013-04-22 22:08:39

+0

无论你从哪里得到你的文件,只要它在磁盘上。 – piokuc 2013-04-22 22:10:31

+0

您的解决方案运作良好!谢谢! – ReTanica 2013-04-23 17:05:25

相关问题