Vettori di tipo char* da main a funzione e viceversa

di il
6 risposte

Vettori di tipo char* da main a funzione e viceversa

Salve a tutti,
dovrei costruire un programma in cui:
nel main dichiaro il vettore che contiene parole (char *)
mi si collega ad una funzione
nella funzione vengono inseriti i caratteri del vettore direttamente

io riesco a farlo con int o char ma non con char*( a me servono quest'ultimi in quanto il vettore deve contenere parole e non singoli caratteri)

ho fatto un esempio :

# include <iostream>
using namespace std;
#include <ctime>
#include <cstdlib>

void funzione(char a[])
{
a[0]= 'ciao1';
a[1]= 'ciao2';
a[2]= 'ciao3';
a[3]= 'ciao4';
a[4]= 'ciao5';
}


int main ()
{
char *a [5];
funzione (a);
return 0;
}
voi sapete qual'è la sintassi corretta?? GRAZIE MILLE A TUTTI !!!!!!!!!!!!!!!!!
ps se fosse possibile senza aprire ulteriori librerie.

6 Risposte

  • Re: Vettori di tipo char* da main a funzione e viceversa

    C'è una serie di errori di base nel codice ...

    Prima di tutto devi comprendere bene le differenze tra

    char *[]

    e

    char[]

    Inoltre, considera che l'assegnazione di stringhe la fai con la funzione strcpy
  • Re: Vettori di tipo char* da main a funzione e viceversa

    Il motivo perche l'ho scritto cosi non è perche non sappia la differenza tra char *[] e char [] ma per il fatto che non so' qual'è la costruzione corretta per usare il primo...e quindi ho messo per far capire la cosa piu simile a quello che intendevo
  • Re: Vettori di tipo char* da main a funzione e viceversa

    No ... non ti ho capito.

    Tu dici che sai la differenza tra char *[] e char [] e poi scrivi

    void funzione(char a[])

    e

    char *a [5];
    funzione (a);

    ?

    Mi sfugge qualcosa.
  • Re: Vettori di tipo char* da main a funzione e viceversa

    È per l'appunto il problema che ho ! se dovessi utilizzare solo char "normale" faccio un programma cosi e sono a posto:

    void funzione(char a[])
    {
    a[0]= 'a';
    a[1]= 'b';
    a[2]= 'c';
    a[3]= 'd';
    a[4]= 'e';
    }


    int main ()
    {
    char a [5];
    funzione (a);
    return 0;
    }

    se volessi utilizzare una sola funzione faccio:


    int main ()
    {
    char *a [5];
    a[0]= 'ciao1';
    a[1]= 'ciao2';
    a[2]= 'ciao3';
    a[3]= 'ciao4';
    a[4]= 'ciao5';
    return 0;
    }


    ma io voglio ottenere lo stesso risultato di quest'ultima scomponendola in due funzioni:
    non so cosa devo scrivere per farla funzionare nelle parti in rosso che so già che sono sbagliate:


    void funzione(char a[])
    {
    a[0]= 'ciao1';
    a[1]= 'ciao2';
    a[2]= 'ciao3';
    a[3]= 'ciao4';
    a[4]= 'ciao5';
    }


    int main ()
    {
    char *a [5];
    funzione (a);
    return 0;
    }

    non so quale sia la corretta sintassi per farlo....
  • Re: Vettori di tipo char* da main a funzione e viceversa

    febec88 ha scritto:


    se volessi utilizzare una sola funzione faccio:

    int main ()
    {
    char *a [5];
    a[0]= 'ciao1';
    a[1]= 'ciao2';
    a[2]= 'ciao3';
    a[3]= 'ciao4';
    a[4]= 'ciao5';
    return 0;
    }
    Scusa ma questo codice è sbagliato, non è compilabile ... se non ci capiamo sulle premesse è difficile procedere ...

    Comunque, è il tipo di dato che passi che deve essere rispettato quindi

    void funzione(char *a[])
  • Re: Vettori di tipo char* da main a funzione e viceversa

    Mi do del co..g...e
    errore mio ho sbagliato le virgolette

    grazie comunque dell'aiuto !!!!!
Devi accedere o registrarti per scrivere nel forum
6 risposte