你今天过得怎么样?我有一个关于文件名处理的问题:D。我的代码不想工作,它给了我错误的细分。
我们的想法是创建唯一的文件名并创建 如果 ,则已存在同名文件。第一个是没有文件的异常,因此for循环从1而不是0开始。
unistd.h是必需的!
char fileName[15][100];
sprintf(fileName[0],"output.txt");
FILE *output;
for(int i = 1 ;i < 100; i++){
sprintf(fileName[i],"Output%d.txt",i+1);
//File exists
if(!access(fileName[i],F_OK))
{
//Create and open a file
output = fopen(fileName[i], "w");
break;
}
}
我只需要创建一个try函数(比如while),直到找到未采用的名称。我只是将for循环放在那里,限制为100。
答案 0 :(得分:1)
你必须为字符串使用malloc内存。
例如
public void stopRecording(View view) {
start.setVisibility(View.VISIBLE);
stop.setVisibility(View.GONE);
status = false;
Log.d(LOG,"I am about to release the record.");
record.release();
Log.d(LOG, "I have released.");
}
Number_If_Strings:你需要多少个字符串? String_Length:每个字符串的长度
答案 1 :(得分:1)
你在这里有什么:
char* fileName[100];
...是一个包含100个char指针的数组。但是,您没有为实际的字符串本身腾出空间。
执行此操作时:
sprintf(&fileName[0],"output.txt");
...你将“output.txt”写入fileName [0]中地址所指向的位置,很可能是0x0或一些随机值,具体取决于你的编译器以及你是否在堆栈或堆上分配数组等。这通常会导致分段违规,并且您的程序会终止。
答案 2 :(得分:0)
您没有为指向数组指定任何内存指向。你的语法也有点偏离。这个简单的例子展示了如何为字符串数组分配内存,分配一些值,打印它们并释放内存。
SELECT
name, capital
FROM
world
WHERE
capital LIKE concat('%', name, '%') OR capital LIKE concat('%', name, '%')
节目输出:
db.comments.aggregate(
[
{$match: {blog_id: ObjectId("56587befdb7224110f007233")}}, //match blogid
{"$unwind": "$comments"}, //unwind the comments array
{$sort: {"comments.dt": 1}}, //sort the comment documents by date
{
"$group": {
"_id": '$blog_id', //group comment documents by blog_id
"comments": {
"$push": "$comments" //push comments of same blog_id into an array
}
}
}])