c语言编程怎样创建各种文件,C语言编程:如何创建一个父目录和手动插入文件?...

我的目标是,我的C程序中,做一个新的目录。在该目录中,我要创建15个简单的文本文件。我是卡在的部分是如何产生新创建的目录内的15个文本文件。我创建了这样的新目录:

mkdir("new_dir", 0755);

但我不确定如何在其中创建一个文本文件(在相同的程序)。任何提示吗?

答案

首先,你要mkdir(2)通话可能会失败(出于各种原因,包括事实目录确实存在的话)。而且很可能,你居然要创建主目录,你是在当前working directory创建它的目录或文件(例如离开内置到您的用户一些适当的和以前cd壳的负担)。实事求是地讲,目录路径应该在运行时作为一个字符串(可能使用snprintf(3)或asprintf(3))计算。

所以,如果你想在用户的主目录下创建一个目录(记住~/foo/由shell通配符时扩展,见glob(7) ...;你需要获取从environ(7)主目录),你想代码的东西:

char pathbuf[256];

snprintf(pathbuf, sizeof(pathbuf), "%s/new_dir", getenv("HOME"));

计算该字符串。当然,你需要处理的故障(getenv(3),或snprintf的)。我要离开这些检查作为一个练习。你可能想保留getenv("HOME")的结果,在一些automatic variable。

然后,你需要做的目录,并核对失败。至少,(使用perror(3)看看errno(3)):

if (mkdir (pathbuf, 0750)) { perror(pathbuf); exit(EXIT_FAILURE); }

BTW,传递给mkdir模式可能不会允许所有其他用户编写或访问它(如果没有,你可以有一些安全vulnerability)。所以,我更喜欢0750到你0755。

最后,你需要创建它里面的文件,可能使用fopen(3)写入之前。因此,一些类似的代码

int i = somenumber();

snprintf(pathbuf, sizeof(pathbuf),

"%s/new_dir/file%d.txt", getenv("HOME"), i);

FILE* f = fopen(pathbuf, "w");

if (!f) { perror(pathbuf); exit(EXIT_FAILURE); };

我的建议是记录一些约定。你想让你的程序创建在当前工作目录的目录,或以某种“绝对”路径,或许与你的用户的主目录下创建了吗?如果你的程序是由一些用户开始(而不是setuid或不具有root权限,请参阅credentials(7)),不允许建立在任意地方的目录或文件(见hier(7))。

如果在Linux上,你会更好看一些系统编程的书像ALP或更高版本。如果使用不同的操作系统,你应该读它的系统API的文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值