Utilizzare array di puntatori in fgets()

di il
2 risposte

Utilizzare array di puntatori in fgets()

Siamo su Windows. Il seguente codice, che serve a memorizzare dentro una matrice l'output prodotto dal comando "ipconfig" (ovvero una riga di matrice per ogni riga di output) già funziona:

#include <iostream>
using namespace std;

int main(){
  const int dim = 330;
  char buf[dim][dim];
  FILE *pts;
  int i = 0;

  if ((ptr = popen("ifconfig","r")) != NULL){
    while((fgets(buf[i], dim, ptr)) != NULL){
      i++;
    }
  }

return 0;
}
Ho letto però che accedere agli array come dei puntatori (ad esempio come *(array+1) anziché array[1]) è più efficiente. La mia domanda è questa... come si può riscrivere il codice di sopra in modo che invece di usare la matrice con gli indici, si possa usare l'aritmetica dei puntatori? Se avete inoltre degli ulteriori suggerimenti per rendere più efficiente il codice sopra esposto vi ringrazio!

2 Risposte

  • Re: Utilizzare array di puntatori in fgets()

    Marvin94 ha scritto:


    Ho letto però che accedere agli array come dei puntatori (ad esempio come *(array+1) anziché array[1]) è più efficiente.
    Forse con i compilatori di qualche decennio fa.
    Oggigiorno accedere con *p o p è esattamente la stessa cosa.
  • Re: Utilizzare array di puntatori in fgets()

    Mah non saprei. Il libro a cui faccio riferimento è "Herbert Schildt - La Guida Completa C++ - Mc Graw Hill (Seconda Edizione)". Nono sono stato in ogni caso capace a usare il puntatore invece dell'array... potete mostrarmi come lo modifichereste voi il mio codice?
Devi accedere o registrarti per scrivere nel forum
2 risposte