Pagina 1 di 1

[Risolto] [C] Trimming di una stringa

Inviato: venerdì 6 giugno 2014, 14:31
da Actarus5
Salve a tutti, mi servirebbe effettuare il trmming di una stringa, quindi data una stringa vorrei ottenere questo effetto qui:

Codice: Seleziona tutto

" this is a test  "
"this is a test"

Codice: Seleziona tutto

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void my_trim(char *s, unsigned int len)
{
    char *b = s;
    while ( len > 0 && isspace( (unsigned char) s [len - 1] ) )
        len--;
    while ( len > 0 && isspace(*b) )
    {
        b++;
        len--;
    }
    memmove(s, b, len);
    s[len] = '\0';
}

int main()
{
    char s[]="   this is a test     ";
    unsigned int len;
    len=strlen(s);
    puts(s);
    my_trim(&s,len);
    printf("After trimming : %s\n",s);
    return 0;
}
In effetti sembra funzionare, ma ottengo il seguente warning:

Codice: Seleziona tutto

trim.c: In function ‘main’:
trim.c:24:9: warning: passing argument 1 of ‘my_trim’ from incompatible pointer type [enabled by default]
         my_trim(&s,len);
         ^
trim.c:5:10: note: expected ‘char *’ but argument is of type ‘char (*)[23]’
     void my_trim(char *s, unsigned int len)
          ^
So che potrebbe sembrare sciocco come problema, ma al momento non riesco a capire cosa sbaglio... :shy:

Re: [C] Trimming di una stringa

Inviato: venerdì 6 giugno 2014, 14:40
da toro2k
La variabile locale s è di tipo char*, quando la passi a my_trim usando &s in realtà stai passando un char**, per correggere basta che modifichi la chiamata così:

Codice: Seleziona tutto

my_trim(s, len);

Re: [C] Trimming di una stringa

Inviato: venerdì 6 giugno 2014, 14:44
da Actarus5
Vero, vado a buttarmi in un fosso per la vergogna... Ho cambiato la funzione in corso d'opera ma ho lasciato così com'era il main :muro:

Re: [C] Trimming di una stringa

Inviato: venerdì 6 giugno 2014, 15:15
da vaeVictis
Vero, vado a buttarmi in un fosso per la vergogna
Perché?
Si chiama debug ;)


p.s.:
Se hai concluso, ricorda il [Riosolto] :)

Re: [C] Trimming di una stringa

Inviato: venerdì 6 giugno 2014, 17:08
da Actarus5
vaeVictis ha scritto:
Vero, vado a buttarmi in un fosso per la vergogna
Perché?
Si chiama debug ;)
Certo, è che a volte ci si lascia distrarre da cose più complicate e non si vedono gli errori banali come questo e non è piacevole :lol: