Hallo Hannes,

Es gibt mehrere Ansätze Dein 'Problem' zu Lösen.

Du kannst natürlich die paar Zeilen so oft hintereinander schreiben, wie Du möchtest, bei 2 oder 3 Sensoren ist das kein Problem.

Du könntest Dir so wie Linux80 sagt eine Funktion basteln an die Du z.B. Die Slaveadresse und ein Zeiger auf ein 2 Byte Array übergibst.
Das sieht dann z.B. so aus:
Code:
void LeseTemp(uint8_t Adresse,char* Temp) {
     i2c_start_wait(Adresse+I2C_WRITE); 
      i2c_write(GETTEMP);           
      i2c_rep_start(Adresse+I2C_READ); 
      *Temp++ = i2c_readAck(); 
      *Temp = i2c_readNak(); 
      i2c_stop(); 
}
Im Programm sehe das etwa so aus:
Code:
#define SensorBoden 0x90
#define SensorLuft 0x92
char TempBoden[2];
char TempLuft[2];

for(;;) {
  LeseTemp(SensorBoden,TempBoden);
  LeseTemp(SensorLuft,TempLuft);
  ...
  ...
  ...
}
Wenn man alles in einem Array haben möchte und die Slave Adressen schön um 2 versetzt sind, könnte man anstatt der Funktion eine for Schleife nutzen etwa so:
Code:
#define Sensor1 0x90
#define AnzahlSensoren 3
...
...
char Temperaturen[AnzahlSensoren*2];
uint8_t a;
for (a=0;a< (AnzahlSensoren+1)*2;a+=2){
      i2c_start_wait(Sensor1+a+I2C_WRITE); 
      i2c_write(GETTEMP);           
      i2c_rep_start(Sensor1+a+I2C_READ); 
      Temperaturen[a] = i2c_readAck(); 
      Temperaturen[a+1] = i2c_readNak(); 
      i2c_stop();
}
Wie Du siehst, gibt es mehrere Wege nach Rom...

Viel Spaß Sebastian

P.S. Das zweite Beispiel gefällt mir nicht ganz, vielleicht könnte man das besser schreiben