Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C remove()函数不使用';I don’我没有按预期工作_C_Remove - Fatal编程技术网

C remove()函数不使用';I don’我没有按预期工作

C remove()函数不使用';I don’我没有按预期工作,c,remove,C,Remove,我使用的代码生成固定数量的文件并保留该数量。创建每个新文件后,必须删除一个旧文件。代码如下: #include <stdio.h> #include <stdlib.h> // needed for malloc #include <string.h> // needed for strcpy #include <unistd.h> #define Extension ".txt" #define LOG_MIN_FILENA

我使用的代码生成固定数量的文件并保留该数量。创建每个新文件后,必须删除一个旧文件。代码如下:

#include <stdio.h>
#include <stdlib.h> // needed for malloc
#include <string.h> // needed for strcpy
#include <unistd.h>

#define Extension ".txt"
#define LOG_MIN_FILENAME_SIZE 32
#define NBR_OF_FILES 6

char buffer[LOG_MIN_FILENAME_SIZE];

int timez = 0;
int minutes = 0;
int count = 0;

FILE* pf = NULL;
char* ListOfFiles[6];

int main(void)
{
    for (int i = 0; i < 3; i++) {
        ListOfFiles[i] = calloc(LOG_MIN_FILENAME_SIZE + 1, 1);
    }

    for (int i = 0; i < 10; i++) {
        sprintf(buffer, "%d" "%d" Extension, minutes, timez);

        if (access(buffer, F_OK) == -1) {
            pf = fopen(buffer, "w"); // create the file
            count++;
            fclose(pf); //closing the files is necessary
            if (count >= NBR_OF_FILES) {
                remove(ListOfFiles[0]); //remove the oldes file.
            }

            for (int i = 0; i < NBR_OF_FILES - 1; i++) {
                strcpy(ListOfFiles[i], ListOfFiles[i + 1]); // u cant use just normal assignment because it copies the head ot the pointer rather than the actual content of it
            }

            strcpy(ListOfFiles[NBR_OF_FILES - 1], buffer);
        }
        timez++;
        minutes++;
    }

    for (int i = 0; i < NBR_OF_FILES - 1; i++) {
        printf("%s", ListOfFiles[i]);
    }
}
#包括
#包括//malloc所需的
#包括//strcpy所需的
#包括
#定义扩展名“.txt”
#定义日志\最小\文件名\大小32
#定义\u文件的NBR\u 6
字符缓冲区[LOG_MIN_FILENAME_SIZE];
int-timez=0;
整数分钟=0;
整数计数=0;
FILE*pf=NULL;
char*列表文件[6];
内部主(空)
{
对于(int i=0;i<3;i++){
ListOfFiles[i]=calloc(LOG\u MIN\u FILENAME\u SIZE+1,1);
}
对于(int i=0;i<10;i++){
sprintf(缓冲区,“%d”%d“扩展,分钟,timez);
if(访问(缓冲区,F_确定)=-1){
pf=fopen(缓冲区,“w”);//创建文件
计数++;
fclose(pf);//必须关闭文件
如果(计数>=NBR\U的\U文件){
remove(ListOfFiles[0]);//删除旧文件。
}
对于(int i=0;i

在输出中,一次只创建一个文件(每次执行)。当我执行程序超过
NBR\u OF_FILE
次时,不会删除任何文件!你知道问题出在哪里吗?

你有6个文件,但是
for
with
calloc
只运行了3次。不知道为什么,但会发生这种情况。@anastaciu你的评论是最好的,你有6个文件,但是
for
with
calloc
只运行了3次。不知道为什么,但它确实发生了。@anastaciu你的评论是最好的>