Bene quì da solo già son arrivato ad un buon punto... come sempre traccia:
Sia A un vettore di caratteri di lunghezza N contenente alcune parole (solo lettere maiuscole) separate da uno spazio. Scrivere una funzione che restituisca TRUE se i primi due caratteri di ogni parola corrispondono rispettivamente al primo e all'ultimo carattere della parola precedente.

Esempio N=25
A= |C|A|N|E| |C|E|N|A| |C|A|R|I| |C|I|E|L|O| |C|O|M|O|
Output=TRUE

Questo è il mio programma:
codice:
#include <stdio.h>
void primedue(char A[],char primdue[],int i)
{ 
  primdue[0]=A[i];
  primdue[1]=A[i+1];
  primdue[2]='\0';
}
void primaeultima(char A[],char primult[],int i,int n)
{ 
  primult[0]=A[i];
  int j=i;
  while(A[i]!=' ')
  {
    i++;
  }
  primult[1]=A[i-1];
}
int verifica (char A[],int n)
{
  int i,j,b;
  float confronto;
  char primdue_old[3],primdue[3],primult[3];
  for (i=0;i<n;i++)
  {
    primedue(A,primdue,i);
    primaeultima(A,primult,i,n);
    //
    // Just debugging...
    printf ("Stringa: %s Primdue: %s Primult: %s Primdue_old: %s\n",A,primdue,primult,primdue_old);
    //
    confronto=strcmpi(primdue_old , primult);
    if (confronto==0)
      b=1;
    else
      b=0;
    for(j=0;j<3;j++)
    primdue_old[j]=primdue[j];
  }
  return (b);
}
int main()
{
  int n,b;
  printf("Quanto deve essere lungo l'array?\n");
  scanf("%d",&n);
  n+=1;
  char A[n];
  printf("Inserire le parole desiderate \n");
  while(gets(A)!=NULL)
  {
    if(gets(A)!=NULL)
    {
     break;
    }
  }
  b=verifica(A,n);
  if (b==1)
    printf("TRUE\n");
  else
    printf("FALSE\n");
  system("pause");   
  return 0;
}
Il problema sostanzialmente credo sia nel fatto che sul ciclo di primaeultima non viene passato il parametro "i" a verifica. La mia domanda è questa, nel momento in cui la variabile "i" passa ad una funzione e viene elaborata, non dovrebbe tornare con lo stesso valore a verifica?