c - 写入名称为日期的文件

标签 c

我想写入一个文件,它是我下面的一个目录,但由于某种原因,我不断收到错误,我想是因为我的缓冲区的文件标记结束。就像 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(&current_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/

相关文章:

c - 用 C 打乱文本

c - 当命令有选项时 execvp 失败

c - 共享一个缓冲区——线程安全

c++ - 为什么 getchar_unlocked() 在 c/c++ 中更快?

c - 为什么“while(!feof(file))”总是错误的?

c - Endianness——为什么 chars 将 Int16 打印倒过来?

c - 如何在 C/C++ 中传递对二维数组的引用?

c - 我有一个程序无法在 Ubuntu 上运行,但可以在 Windows 上运行

c - C 中打印数组的通用函数

c - fork() 的问题