[Risolto] [C] Trimming di una stringa

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

[Risolto] [C] Trimming di una stringa

Messaggio 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:
Ultima modifica di Actarus5 il venerdì 6 giugno 2014, 17:09, modificato 1 volta in totale.
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
Avatar utente
toro2k
Prode Principiante
Messaggi: 148
Iscrizione: lunedì 30 gennaio 2012, 12:56
Località: Savona

Re: [C] Trimming di una stringa

Messaggio 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);
Software is meant to be soft!
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

Re: [C] Trimming di una stringa

Messaggio 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:
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [C] Trimming di una stringa

Messaggio da vaeVictis »

Vero, vado a buttarmi in un fosso per la vergogna
Perché?
Si chiama debug ;)


p.s.:
Se hai concluso, ricorda il [Riosolto] :)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

Re: [C] Trimming di una stringa

Messaggio 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:
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti