Ho provato a svolgere il seguente esercizio:
scrivere una funzione ricorsiva che ricevuta una stringa verifichi se essa è formata da due tasselli uguali. Esempio: "caracara", "ciaociao", "cici"...mentre sono diversi ad esempio in: "caracasa", "ciaocia" ecc...

codice:
#include <iostream>
#include <cstring>
using namespace std;

bool tasselliuguali(char *S, int n, int i, int j);

int main(){
    int n=4;
    int i=0, j=n;
    char S[]={"ciaociao"};
    
    if(tasselliuguali(S,n,i,j))
    cout<<"ok"<<endl;
    else cout<<"no"<<endl;
    

system("pause");
return 0;
}

bool tasselliuguali(char *S, int n, int i, int j){
     if(strlen(S)% n != 0)
     return false;
     
     if(i >=n-1 && j >= n+n)
     return true;
     
     if(strcmp(S[i],S[j])!=0) //cosi non funzione ma se faccio if(S[i]!=S[j]) SI!
     return false;
     
return tasselliuguali(S, n, ++i, ++j);
}
Sembra funzionare se sostituisco if(strcmp(S[i],S[j])!=0) con if(S[i]!=S[j])
come mai?? Non dovrebbero essere equivalenti? strcmp dovrebbe restituire 0 se le due stringhe sono uguali...e 1 o -1 se sono diverse vero?cosa sbaglio?