使用C中的循环创build目录和文件

我是C编程的新手,所以可能有一个简单的解决scheme,但我试图通过使用C中的循环在这些目录中创build多个目录和文件。例如,

directory1中

  1. text1.txt
  2. text2.txt

Directory2

  1. text1.txt
  2. text2.txt

我还没有实现循环,但我试图追加文件名到文件夹,以便我可以创build该文件。

我已经附上了代码,我知道错误是在第5行,我试图concatinstring。 有没有办法创build一个variables来存储目录的名称,并附加文件名到目录为了创build文件?

感谢您的帮助。

这是我迄今写的代码

char folder[] = "directory1/"; mkdir(folder, 0750); //Create text file in directory fPointer = fopen(folder + "text.txt", "w"); for(int i = 0; i < textLength; i++){ //Only return numbers from 0 - 25 int rnum = rand() % 26; //Use uppercase ascii values therefore add 65 text[i] = (char) (rnum +65); //Write to the file fprintf(fPointer,"%c",text[i]); } //Stop writing to text.txt and close connection fclose(fPointer); 

在字符串的情况下,第一个C不支持+运算符。 您需要使用strcat()连接C中的字符串 。更多的事情总是查看stat用于检查目录是否存在, mkdir用于创建目录。

以下代码工作

 #include<stdio.h> #include<stdlib.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main(){ char folder[] = "directory1/"; char text[1024]; struct stat st = {0}; FILE *fPointer; if (stat(folder, &st) == -1) { mkdir(folder,0750); } //Create text file in directory strcat(folder,"text.txt"); fPointer = fopen(folder, "w"); int len=strlen(folder); for(int i = 0; i < len; i++){ //Only return numbers from 0 - 25 int rnum = rand() % 26; //Use uppercase ascii values therefore add 65 text[i] = (char) (rnum +65); //Write to the file fprintf(fPointer,"%c",text[i]); } //Stop writing to text.txt and close connection fclose(fPointer); return 0; } 

关于你的例子中的第一行:

 char folder[] = "directory1/"; 

结尾的“/”不需要创建目录directory1

该行:

 fPointer = fopen(folder + "text.txt", "w"); 

没有做你期望的事情。 C使用字符串函数来操纵字符串,例如连接2个字符串。 ( #include <string.h>

给定一个位置,如:

 char absoluteDir[] = "/user1/dir1/dir2/"; // copy to an absolute location, or char relativeDir[] = "../dir1/";// will go one dir up from location and copy to dir1 

并创建一个文件名称为:

 char filename[] = "text.txt"; 

使用其中一个字符串函数(如strcatsprintf)将组件字符串连接到一个位置,如

 char dirPathFileName[260]; 

例如:

 sprintf(dirPathFileName, "%s%s", absoultDir, filename); 

要么

 strcat(dirPathFileName, relativeDir); strcat(dirPathFileName, filename); 

这些将创建:

 "/user1/dir1/dir2/text.txt" 

要么

 "../dir1/text.txt" 
 (Note: this requires call be made from a location where one directory up contains a sub-direcotry named 'dir1`) 

这将作为函数fopen的第一个参数正常工作