Visualizzazione dei risultati da 1 a 4 su 4

Discussione: palindroma in c

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171

    palindroma in c

    ho un altro dubio non riesco a capire questa funzione.
    codice:
    int palindroma(char* stringa) {
        char* copia = strdup(stringa);
        char* cursor = copia+(strlen(stringa)-1);
        for(; cursor>=copia; stringa++, cursor--)
            if( *stringa!=*cursor )
               return 0;
         return 1;
    non capisco perche in cursor mette copia + la lunghezza di stringa

  2. #2
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    Re: palindroma in c

    Originariamente inviato da processore
    ho un altro dubio non riesco a capire questa funzione.
    codice:
    int palindroma(char* stringa) {
        char* copia = strdup(stringa);
        char* cursor = copia+(strlen(stringa)-1);
        for(; cursor>=copia; stringa++, cursor--)
            if( *stringa!=*cursor )
               return 0;
         return 1;
    non capisco perche in cursor mette copia + la lunghezza di stringa
    cursor e copia sono due puntatori.
    Qui trovi una spiegazione di cos'e' e come si comporta un puntatore
    http://it.wikipedia.org/wiki/Puntato...rammazione%29t

    Qui trovi una spiegazione dell'aritmetica dei puntatori
    http://it.wikipedia.org/wiki/Aritmetica_dei_puntatori
    e di cosa significhi sommare un intero a un puntatore.

    Se dopo la lettura hai ancora dubbi torna, ma ho tirato un occhiata e in una delle due pagine c'e' scritta pari pari la risposta alla tua domanda.

  3. #3
    Tra l'altro, strdup in quel codice non serve a niente, anzi, dà un memory leak...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    quindi copia e cursor sono 2 indici ,
    cursor punta alla fine della stringa e copia all ínizio giusto ?

    quindi sarebbe giusto pure fare cosi ?

    codice:
    for(; cursor>=copia; copia++, cursor--)
            if( *copia!=*cursor )
               return 0;
            return 1;

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 © 2025 vBulletin Solutions, Inc. All rights reserved.