Funzione di confronto array char

Come ho detto esistono diverse soluzioni per uno stesso problema! Ci sono soluzioni migliori di altre, la soluzione mostrata da docdoc è migliore di quello che volevi fare tu :slight_smile:

Però anche il tuo approccio è una possibile soluzione, solo con qualche modifica

  1. confronto carattere per carattere
  2. se trovo uno diverso restituisco 0
  3. se tutti i caratteri sono uguali restituisco 1

Tua funzione modificata

boolean Confronta( char*a, char*b,byte k){  
 
     for (byte i=0;i<k;i++){
         if (a[i]!=b[i])
             return false; // ho trovato un carattere diverso
     }

     return true; //il ciclo for è terminato non è uscito dalla funzione quindi tutti i carattere sono uguali
 
}

Per pura curiosità sono andato a vedere l'implementazione della strncmp
È pura poesia...

manolomao:
PS @Docdoc, perchè non usare una const char all'interno della funzione??

Generalmente non uso le const, ma in questo caso non dovendo cambiare nulla delle stringhe puoi anche usare const.

E dove la metteresti la const?
Quello che passi alla funzione e il puntatore alla stringa, non la stringa
Puntatore può anche essere costante, ma la stringa no....

Forse ho scritto una caxella
Magari stasera ci guardo bene

Mi hai fatto venire il dubbio perché const non l'ho mai usato :slight_smile:
Ho provato su ideone un ide online, e se usi const su un puntatore a char rende immodificabile la stringa.

P.S. non uso mai const nei parametri di una funzione, sono io che scrivo la funzione e sono io che so che non vanno modificati i parametri :wink: quindi lo trovo inutile :slight_smile: :slight_smile:

Si infatti
Const char * è costante la stringa
Char const * è costante il puntatore
Const char const * è puntatore costante a stringa costante
Comunque sono d'accordo con te: io scrivo la funzione, io evito di scrivere dove non devo...

Se devi fare una API per qualcun altro, difficilmente lui sa cosa può modificare e cosa no, da cui l'utilità di const.

Senza contare che il compilatore può mettere in atto varie ottimizzazioni, se sa che qualcosa non deve essere modificato (anche se i compilatori più furbi sono in grado di accorgersene da soli).

Infine, in C++ sono valide entrambe le espressioni:

const char *pippo;
char * const pippo;

Il primo vuol dire che ciò a cui il puntatore punta non è modificabile, il secondo che il puntatore stesso non è modificabile (ma ciò a cui punta sì).

Le due cose possono anche essere combinate, ottenendo un fantastico:

const char * const pippo;

Che ho pure usato da qualche parte in Webbino...