ciao a tutti,
lavoro da poco con c e sto provando a realizzare una funzione che mi tolga gli spazi a sx e dx di una stringa (il trim di visual basic per intenderci).
questo è il risultato al quale sono giunto:
codice:
...
int main()
{
    char nome[100];
    char *p1; 
    
    printf("\nInserisci il nome : ");
    gets(nome);
    
    trim(p1, nome);
    
    puts(p1);
    
    while(!getchar()=='\n');
}


void trim(char *p, const char *str)
{    
    int i, inizio, fine;
    char *tmp;
    
    tmp = (char *) malloc(sizeof(char));
    
    for(inizio=0; str[inizio]!='\0'; inizio++)
    {
        if(str[inizio]!=' ')
                break;
    }
    
    for (fine=strlen(str); fine>0; fine--)
    {
        if(str[fine]!=' ' && str[fine]!='\0')
                break;
    }
    
    tmp = (char *) realloc(tmp, (fine - inizio + 2) * sizeof(char));
    
    if (tmp != NULL)
    {
        for (i=0; i<=(fine-inizio); i++)
        {
            tmp[i] = str[inizio+i];
        }
    
        tmp[++i]='\0';
        
        strcpy(p, tmp);
    }
    else
    {
    printf("\nMemoria Insufficiente\n");
    }
}
la funzione in se non è molto difficile, ma è la prima volta che mi trovo a lavorare con i puntatori nella pratica e sono sicuro di aver scritto parecchie vaccate.
apparentemente cmq la funzione funziona quando la variabile nome è inferiore ai 20 caratteri, in caso contrario ne viene aggiunto uno a caso in fondo..

qualcuno può dirmi, senza paura di ferirmi , cos'ha che non va quanto scritto?