编辑代码

#include <stdio.h>


void writeToCircularArray(int* array, int data,int len) {
    static int currentIndex = 0; // 当前索引位置
    static int isFull = 0; // 是否数组已满

    if (!isFull && currentIndex >= len) {
        // 数组已满,标记为已满
        isFull = 1;
        currentIndex = 0;
    }

    if (isFull) {
        // 数组已满,丢弃第一个数据,将后续数据向前移动    
        for (int i = 0; i < len - 1; i++) {
            array[i] = array[i + 1];
        }
        array[len-1] = data;
    }
    else
    {
        array[currentIndex++] = data;
    }
}


int main () {
    int test[5] = {0x00};

    for(int i= 0;i<9;i++)
    {
        writeToCircularArray(test,i,5);
    }

    printf("test[0]=%d\n",test[0]);
    printf("test[1]=%d\n",test[1]);
    printf("test[2]=%d\n",test[2]);
    printf("test[3]=%d\n",test[3]);   
    printf("test[4]=%d\n",test[4]);
}