我想写入一个文件,它是我下面的一个目录,但由于某种原因,我不断收到错误,我想是因为我的缓冲区的文件标记结束。就像 cd .. 然后 cd directoryToWriteTo 和名称必须是当前时间戳。 它一直告诉我打开是空的,文件名是日期+ EOF,我认为这是问题所在?文件名也必须是静态的。
static char * filename ;
int main(){
generateName();
FILE * opening;
opening = fopen(filename,"aw");
if(opening == null){
fprintf("couldn't write to file");
fprintf(filename);
}
}
void generateName(){
time_t current_time;
struct tm *localtime;
char buffer[80];
current_time = time(NULL);
localtime= localtime(¤t_time);
if (localtime== NULL ){ exit(-1);}
strftime(buffer,sizeof(buffer),"%Y_%m_%d_%H_%M", localtime);
filenaam = buffer;
// How can i make it so it goes to a directory under him ?
}
它还必须与 linux 和 windows 一起工作。
最佳答案
数组缓冲区的内存仅在您的 generateName 函数期间有效。 即使您使用 filenam [sic] 变量保留指向缓冲区的指针, 当您返回主函数时,指针不再有效,因为变量 buffer 是 generateName 函数的局部变量。
您应该将字符数组声明并分配为静态数组 只需分配一个指针,并将该指针作为参数传递给 generateName 函数,然后将生成的文件名写入那里。
希望对您有所帮助!
关于c - 写入名称为日期的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53030373/