【发布时间】:2014-01-11 20:13:10
【问题描述】:
作为一个学校项目,我需要编写一个 C 程序,它打开一个文件夹(文件夹名称作为参数),然后将每个文件的内容写入其中。实际上是在做 cat 的工作。
但我绝对不知道如何写它我知道文件打开和系统调用,所以我想使用它们。
在 exec 中执行 ls 命令时,我们使用了 ("bin\ls",ls,NULL),所以我可以在 execlp 中使用 open 或 cd 命令打开文件夹吗?
打开后,我需要打开其中的每个文件并打印其内容。可能会使用 while 循环和 fopen 来完成,但我如何编写 while 循环来检查它何时到达文件夹末尾?甚至我也可以设法编写它我要如何打开一个名称未写在程序中的文件?
如果系统调用和 fopen 是错误的方式,那我该怎么办?
main(void)
{
FILE * fp;
char dicname[10];
scanf("%s",dicname[0]);
pid_t pid;
pid = fork();
if(pid<0)
{
fprintf(stderr,"Fork error");
exit(-1);
}
else if (pid ==0)
{
//execlp("cd","cd",dicname); or maybe //execlp("open","open",dicname);
//while(end of folder) //maybe 1<argv
//{
//fopen(files,r)
//}
}
}
【问题讨论】:
-
首先你应该学习
scanf函数,因为它需要一个char*(一个指向char的指针)作为"%s"格式的参数,你只给它单个char(不是指针)。 -
ok ok 我把你写的只是一个小错误。剩下的?
-
您可以使用 opendir() 函数读取目录列表,然后您不必调用“ls”(启动新进程很昂贵)。见stackoverflow.com/questions/612097/…
标签: c while-loop fork fopen system-calls