Peek N Bytes from Circular Buffer

Code

  #include <stdio.h>
  #include <stdint.h>

  typedef struct{
      int buffer[10];
      int head; 
      int tail; 
      int count;
      int capacity; 
  }Circular_t; 

  void create_circular(Circular_t *cb){
    for(int i = 0; i<10; i++){
        cb->buffer[i] = (i+1)*10;
        cb->head = 3; 
        cb->tail = 7; 
        cb->count = 6; 
        cb->capacity = 10;
    }
  }

  void getCircularBuffer(Circular_t *cb, int size){
    //size: so luong phan tu muon doc
    for(int i = 0; i < size; i++){
        if(i < cb->count){
          printf("%d",cb->buffer[(cb->tail + i)%cb->capacity]);
        }
        else{
          printf("NULL");
        }
        if(i < size-1){
          printf(" ");
        }
    }
  }

  int main(){
    Circular_t cb; 
    create_circular(&cb); 
    int size; 
    scanf("%d",&size); 
    getCircularBuffer(&cb, size);
    return 0;
  } 

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

4

Expected Output

80 90 100 10