试图在 C 目录中创建文件,但未创建文件

Trying to create file in directory in C, but file is not being created

我已经搜索了好几个小时了,但无法弄清楚为什么这不起作用。我想在 C 中创建一个文件,在我创建的目录中,但没有创建该文件。这是与创建目录和创建文件有关的相关代码。

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<assert.h>

char d1[50] = "myname.rooms.";
char str[50];
char filename[50];
int d2 = getpid();
int dir;
const char *rooms[10] = {"Lillard", "Matthews", "Batum", "Aldridge", "Lopez", "Mccollum", "Leonard", "Blake", "Gee", "Freeland"};
int z;

sprintf(str, "%i", d2);

strcat(d1, str);

dir = mkdir(d1, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);

snprintf(filename, 50, "/%s/%s.txt", d1, rooms[0]);

z = strlen(filename);

for(i=0; i<z; i++)
{
    str[i] = filename[i]; 
} 

FILE *f;

f = fopen("str", "w+");

fprintf(f, "ROOM NAME: %s\n", (rooms[0]));

fclose(f);

使目录正常工作,只是没有在该目录或其他任何地方创建文件。我想遍历并为每个房间创建文件,但我只是想让它先与 1 一起运行。我打印出 str 字符串,结果为 /myname.rooms.22222/Lillard.txt 其中 myname.rooms.22222 是目录,Lillard.txt 应该是文件名。我现在卡住了,请帮忙。

您正在 运行 程序所在的当前目录中创建文字名称为 "str" 的文件。

做这样的事情:

char dir_name[PATH_MAX];
mode_t dir_mode = ...; /* your file mode bits */
int i = ...; /* your value */

snprintf( dir_name, PATH_MAX, "whatever.%d", i );

if ( mkdir( dir_name, dir_mode ) == -1 ) {
    if ( errno != EEXIST ) err( 1, "mkdir" );
}

if ( chdir( dir_name ) == -1 ) err( 1, "chdir" );

char file_name[FILENAME_MAX];

snprintf( file_name, FILENAME_MAX, "%s.txt", whatever );

FILE* fp = fopen( file_name, "w+" );

if ( fp == NULL ) err( 1, "fopen" );

/* now you have the file open for writing */
...

fclose( fp );

在这段代码中,文件应该被称为 "str"(这是为了测试还是你真的想使用 str 变量的内容?