devo acquisire due elementi, prima uno e poi un'altro in due stringhe diverse.
l'elemento puo' essere o una lettera compresa tra A e Z oppure tra a e z quindi minuscole oppure maiuscole...
se l'elemento inserito e' una lettera maiuscola deve essere del tipo: A( a,x,... )


io pensavo di fare cosi:
1) chiedo all'utente di inserire il primo termine nella stringa1, poi richiamo la funzione che controlla se e' stato inserito tutto, secondo i miei criteri;
se non rispetta i miei criteri ricomincia da capo richiedendo di reinserire la stringa..
e cosi anche per la seconda stringa.


i controlli sono:
- se e' una lettera compresa tra a e z ne deve inserire soltanto una e poi passare all'inserimento della seconda stringa...

- se il primo elemento della stringa e' una lettera maiuscola da A a Z, l'elemento successivo e' una '(' _e poi qua inserisce quello che vuole e l'ultimo elemento prima di '\0' deve essere _')'


per fare questo io pensavo di allocare per la stringa uno spazio di 2 caratteri, cosi che per le costanti e le variabili l'utente puo' inserire solo un'elemento, mentre per le funzioni rialloca lo spazio aumentando ogni volta di 1 con realloc..

per ora ho scritto questo:

codice:
/*dichiarazione delle librerire*/
#include <stdio.h>
#include <stdlib.h>

/*dichiarazione delle funzioni*/
int controlli(char* stringa);

/*definizione del main*/
int main(int argc, const char * argv[])
{
    int i,
        esito = 0,
        esito_controlli = 0;
    
    
    char    *stringa = NULL,
            carattere_non_letto;
    
    /*allocazione della stringa*/
    stringa=(char*)malloc(2*sizeof(char));
    
    /*acquisizione del primo temine*/
    do {
        printf("inserisci il primo termine:\n");
        esito = scanf("%s", stringa);
        
        
        /*validazione stretta*/
        if(esito !=1 || esito_controlli !=1)
        {
            do{
                scanf("%c", &carattere_non_letto);}
            while(carattere_non_letto != '\n');
        }
        
    } while (esito !=1 || esito_controlli !=1);
    
    printf("la stringa inserita e': %s", stringa);
    
    return 0;
}

/*funzione per controllare se e' stato inserito tutto correttamente*/
int controlli(char* stringa)
{
    int esito_controlli = 0,
        esito,
        i;

    /*controllo se il carattere successivo ad una lettera minuscola e' il carattere di terminazione*/
        for (i = 0; i != '\0'; i++)
        {
            if (stringa[i] >= 'a' && stringa[i] <= 'z')
            {
                if (stringa[i+1] == '\0')
                {
                    esito_controlli = 1;
                    esito = 1;
                }
            }
            else
                esito_controlli = 0;
            esito = 0;
        }
    return (esito_controlli);
}
questa e' una bozza di codice, il problema che ho adesso, e' che non esce mai dal ciclo...

ciao e grazie dell'aiuto a tutti