Ero sivun ”Rengaspuskuri” versioiden välillä

[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Syntaksiväritys koodiin.
Ipr1 (keskustelu | muokkaukset)
p c:ssä ei käytetä rivinumeroita -> pois hämäämästä, tehosteet&wl ennen esimerkkiä
Rivi 6:
 
== Käytännön toteutus C-koodina==
KyseessäEsimerkissä on [[C (ohjelmointikieli)|C-kielellä]] tehtynä yksinkertainen rengaspuskuritoteutus, jossa on käytetty kolmea apumuuttujaa (<code>read_position</code>, <code>write_position</code> ja <code>buffer_len</code>) rengaspuskurin sisäiseen kirjanpitoon.
<syntaxhighlight lang="C">
1 #include <stdio.h>
 
2
3 #define BUFFER_SIZE 10
 
4
5 char buffer_data[BUFFER_SIZE];
6 int read_position=0;
7 int write_position=0;
8 int buffer_len=0;
 
9
10 int ringbuffer_insert(char data){
11 if( buffer_len < BUFFER_SIZE){
12 buffer_data[write_position]=data;
13 buffer_len++;
14 if(++write_position==BUFFER_SIZE){
15 write_position=0;
16 }
17 return 1;
18 }
19 return 0;
20 }
 
21
22 int ringbuffer_read(char* data){
23 if(buffer_len>0){
24 *data=buffer_data[read_position];
25 buffer_len--;
26 if(++read_position==BUFFER_SIZE){
27 read_position=0;
28 }
29 return 1;
30 }
31 return 0;
}
32 }
</syntaxhighlight>