Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [C] Funzione per invertire stringhe

    ciao ragazzi,vorrei sapere se esiste una funzione che mi permette di invertire una stringa,esempio:

    ciao diventa oaic


    Ho cercato ma non riesco a trovarla.
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  3. #3
    appunto

    thanks

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    codice:
    void reverse(char array[])
    {
       int i, x = strlen(array)-1;
       int tmp;
    
       for(i = 0; i < x / 2; i++)
       {
          tmp = array[i];
          array[i] = array[x];
          array[x] = tmp;
          
          x--;
       }
    }

  5. #5
    Ma quindi l'algoritmo devo comunque farlo io,giusto? cioè non è che se scrivo:

    reverse(array) allora automaticamente mi inverte l'array.....

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ma quindi l'algoritmo devo comunque farlo io,giusto? cioè non è che se scrivo:
    reverse(array) allora automaticamente mi inverte l'array.....
    Certo, se la funzione non appartiene alla libreria standard devi implementarla tu, oppure usi un esempio già pronto in rete.

    @simo_85: non puoi usare x sia come indice di scorrimento "all'indietro" che come variabile contenente la lunghezza della stringa... devi ricorrere ad un indice j diverso inizializzato a x, tra l'altro x va impostato a strlen(array) non strlen(array) - 1.
    every day above ground is a good one

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Hai ragione YuYevon Questa è la mia originale..
    codice:
    void reverse(char array[], int N)
    {
       int i, x = N-1;
       int tmp;
    
       for(i=0; i<N/2; i++)
       {
          tmp = array[i];
          array[i] = array[x];
          array[x] = tmp;
          
          x--;
       }
    }
    
    int main(int argc, char *argv[])
    {     
       char array[] = "I am an array";
    	
       printf("%s\n", array);
       
       reverse(array, strlen(array));
       
       printf("\n**Reversed Array:\n");   
       printf("%s\n", array);
          
       return 0;
    }
    Non so perchè l'ho cambiata per comodita (era una impressione) prima di postarla.. Infatti provandola mi resi conto..

  8. #8
    ma tmp non dovrebbe essere char?

  9. #9
    In effetti sì. Funziona lo stesso perché int è comunque un tipo intero ed è più grande di char.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    ok,comunque grazie dell'aiuto...questo è il risultato :

    codice:
    void reverse(ordinamento** str,int cont){
    
    
    int x,y,lun;
    char car;
    
    
    for(x=0;x<cont;x++){
    
    lun = strlen(str[x]->parola)-1 ;
    
    	for(y=0;y<(strlen(str[x]->parola))/2;y++){
    		
    		car = str[x]->parola[y];
    		str[x]->parola[y] = str[x]->parola[lun];
    		str[x]->parola[lun] = car;
    	
    		lun--;
    	}
    
    }
    
    }

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.