All you need is
* "I2C slave" code for all the slaves (independent of count. They just need different address)
* "I2C master" code for the master
As long as the code keeps on I2C specifications
* you may use different codes on different slaves. (any code you find)
* master and slave code may come from different sources. (any code you find)
Are you asking about PIC software I2C slaves or hardware slaves? Did you already succeed in communicating with one slave?
Essentially communication with three slaves is just the same, using different slave addresses with first i2c_write( ) command. Did you notice the I2C examples in CCS forum code library?
No. Because the manufacturer has, many compiler development tool providers have and many thousands in the internet.
Maybe even in this forum you may find more than 50 I2C codes for PIC.
The OP is asking specifically for CCS C code. The tool has a library of built-in functions different e.g. from Mikro-C or Microchip XC8 compilers. You can of course write low level code in any compiler that accesses PIC special function registers directly, but I guess he doesn't want to.