Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C]lavorare con le stringhe: funzione per togliere gli spazi a sx e dx di una stringa

    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?
    xxx

  2. #2
    Dai un occhiata qui .

    Non saranno il massimo, avro' fatto porcate con l'allocazione dinamica, ma funzionano.

    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.