如果我单独使用此代码(使用主函数),则可以正常工作。
但是当我在我的项目中包含此函数时,它会提供两个文件:
df[{ cond2 = which(Cond == 2);
unlist(Map(function(t1, t2) if(t1 %in% cond2) t1:t2 else NULL,
which(Time1 == "Start"), which(grepl("Stop", Time2)))) }]
和annuaire_client.txt
使用的代码如下:
annuaire1.txt
答案 0 :(得分:1)
您应该检查删除和重命名的返回值:
if (remove("annuaire_client.txt") != 0) {
/* handle error */
}
if (rename("annuaire1.txt","annuaire_client.txt") == -1) {
/* handle error */
}
许多可能性之一是在调用remove时保持主函数打开描述符。请务必将所有fopen
与fclose
配对,或者即使您unlink
/ remove
路径仍然保留(已删除)描述符,您的进程仍会保持(已删除)描述符可能会导致致命错误分配给它的描述符的限制(fopen
将失败 - 这在今天发生在我身上,所以它不是纯粹的人为情况)。还要记住,特别是在无效指针上调用fclose
是未定义的行为,即不是FILE*
。
答案 1 :(得分:1)
您可以尝试检查功能的结果代码。
例如,对于rename
函数,您可以使用以下代码:
#include <errno.h>
(...)
int ret;
ret = rename("annuaire1.txt", "annuaire_client.txt");
if(ret == 0)
{
printf("File renamed successfully");
}
else
{
printf("Error: unable to rename the file");
fprintf(stderr, "System error (%d): %s\n", errno, strerror(errno);
}
答案 2 :(得分:0)
尝试在删除功能和重命名功能的新名称中编写文件的完整路径。 例如:
remove("C:\\Documents\\annuaire_client.txt");
rename("anuuaire1.txt","C:\\Documents\\annuaire_client.txt");
请记住使用\\而不是\