我想在c编程中保存文件,文件名应该是这样的:
依旧...... 那怎么办呢????
答案 0 :(得分:1)
如果你想要便携:
sprintf()
文件名格式为字符串“game%d.txt”fopen()
要阅读的文件请注意,存在争用条件:如果打开读取失败,则另一个进程可能会在您打开文件之前创建该文件。
fopen()
模式标志“x”有一个GNU扩展名,用于独占开放。使用它可以消除竞争条件。
答案 1 :(得分:0)
通过此问题What's the best way to check if a file exists in C? (cross platform),最佳解决方案似乎使用了access()
标题中的unistd.h
函数。
#include <string.h>
#include <stdio.h>
#include <unistd.h>
const size_t MAX_FILENAME_LENGTH = 12;
const int MAX_FILENAME_TRIES = 1000;
char *get_next_filename()
{
char *filename = malloc(MAX_FILENAME_LENGTH);
FILE *file;
int found = 0, i = 0;
do {
snprintf(filename, "game%d.txt");
if (access(filename, F_OK) < 0) { //if file does not exist, we've found our name!
found = 1;
} else {
++i;
}
} while (! found && i < MAX_FILENAMES_TRIES);
return filename;
}
此处的代码将下一个可用文件名作为C字符串返回,从game0.txt
一直到gameN.txt,其中N是MAX_FILENAME_TRIES的值。一旦您使用了文件名,请不要忘记free()
。