Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    98

    c/c++ swap array caratteri

    Ciao a tutti raga...Ho dei problemi ad implementare un metodo in cui gli passi due array di caratteri e mi ritorni il valore scammbiato. Ho provato a fare così:
    Codice:

    char*cambia(char* a, char* b)
    {
    char* tmp;
    strcpy(a,tmp;
    strcpy(a,b);
    strcpy(b,tmp);

    }


    Così facendo il programma si blocca a tempo di esecuzione...come potrei risolvere?

  2. #2
    la memoria per tmp va allocata, prova a farlo staticamente
    char tmp[30];

    o quello che ti serve.
    Altrimenti determina la lunchezza di a e alloca tmp dinamicamente rilasciandola alla fine della funzione.
    Inoltre a deve poter contenere b e viceversa.
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Io la farei così:

    codice:
    char cambia(char* *a, char* *b)
    {
         char *tmp;
    
        tmp=*a; 
        *a=*b;
        *b=tmp;
    
        return 0;
    
    }
    E la invochi così: cambia(&s1,&s2);

    Non ho capito cosa devi ritornare. Se devi solo fare lo swap non hai bisogno di ritornare nulla.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    98
    Grazie mille, ho provato ad usare la soluzione che mi hai postato e funziona perfettamente. Ho da chiederti una cosa però: mi spiegheresti il significato dell'uso doppio dell'operatore di dereferenziamento?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Perchè devi passare alla funzione l'indirizzo delle due stringhe e non la stringa stessa. Altrimenti verrebbero scambiate all'interno della funzione ma non nel main.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    98
    ah ok, ho capito adesso, grazie ancora

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.