Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - trasformare un array di int a char
Forum - C/C++ - trasformare un array di int a char

Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 14:52
Venerdì, 06/11/2009
devo trasformare un array di interi da 0 a 1 in una stringa, ma non so come fare:
Codice sorgente - presumibilmente C/C++

  1. int numeri[5];
  2.  
  3. numeri[0]=1;
  4. numeri[1]=1;
  5. numeri[2]=0;
  6. numeri[3]=1;
  7. numeri[4]=0;
  8.  
  9. char parola[5];
  10.  
  11. parola[]=numeri[];
  12.  
  13. if(parola[]=="11111"){
  14.  
  15. //il mio scopo
  16.  
  17. }



PM Quote
Avatar
Guglielmo (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 15:49
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da NewAge:

devo trasformare un array di interi da 0 a 1 in una stringa, ma non so come fare:
Codice sorgente - presumibilmente C/C++

  1. int numeri[5];
  2.  
  3. numeri[0]=1;
  4. numeri[1]=1;
  5. numeri[2]=0;
  6. numeri[3]=1;
  7. numeri[4]=0;
  8.  
  9. char parola[5];
  10.  
  11. parola[]=numeri[];
  12.  
  13. if(parola[]=="11111"){
  14.  
  15. //il mio scopo
  16.  
  17. }




Hai fatto un po di errori. Comunque basta un ciclo.
Codice sorgente - presumibilmente C++

  1. ...
  2. const int N = 5;
  3. int numeri[N] = {1,1,0,1,0};
  4. char parola[N+1];
  5. int i;
  6.  
  7. for (i = 0; i < N; i++) {
  8.     if (numeri[i] == 1) {
  9.         parola[i] = '1';
  10.     } else {
  11.         parola[i] = '0';
  12.     }
  13. }
  14. parola[i] = '\0';
  15. ...


PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 16:54
Venerdì, 06/11/2009
ricorda che in c le variabili vanno dichiarate tutte all'inizio, ma cosa più importante il c non permette di copiare un vettore in un altro vettore.
devi usare un ciclo come ti ha mostrato Guglielmo :k:

Ultima modifica effettuata da ingMark il 06/11/2009 alle 16:55


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 21:48
Venerdì, 06/11/2009
per farlo diventare funzione basta
Codice sorgente - presumibilmente C++

  1. const int N = 5;
  2. int numeri[5] = {1,1,0,1,0};
  3. char parola[5+1];
  4. int i;
  5.  
  6.  
  7. char converti( caratteri){
  8.      
  9.      for (i = 0; i < N; i++) {
  10.          if (caratteri[i] == 1) {
  11.             parola[i] = '1';
  12.          } else {
  13.             parola[i] = '0';
  14.          }
  15.      }
  16.      return parola;
  17. }



PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 22:03
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da NewAge:

per farlo diventare funzione basta
Codice sorgente - presumibilmente C++

  1. const int N = 5;
  2. int numeri[5] = {1,1,0,1,0};
  3. char parola[5+1];
  4. int i;
  5.  
  6.  
  7. char converti( caratteri){
  8.      
  9.      for (i = 0; i < N; i++) {
  10.          if (caratteri[i] == 1) {
  11.             parola[i] = '1';
  12.          } else {
  13.             parola[i] = '0';
  14.          }
  15.      }
  16.      return parola;
  17. }





Attento!
Stai facendo degli errori abbastanza gravi che stanno alla base del c :yup:
Se non ricordo male tu vieni dalla programmazione php, quindi all'inizio è normale, ma non sottovalutare la parte teorica del c :k:

Il prototipo della funzione
Codice sorgente - presumibilmente C/C++

  1. char converti( caratteri)


Prima di tutto va messo fuori dal main (insieme a tutta la funzione).
Inoltre la dichiarazione corretta è
tipo nome_funzione(tipo nome_parametro1, etc);
quindi sarebbe
Codice sorgente - presumibilmente C/C++

  1. char converti(char caratteri[]) /*oppure char converti(char *caratteri) se sai cosa
  2.                                                   sono i puntatori*/


Ricorda che in c puoi omettere al massimo il nome dei parametri ma MAI il tipo!:nono:

Inoltre una funzione definita di tipo char non può ritornare un vettore (che è un char*)
Quindi il prototipo corretto, se vuoi strutturare in questo modo la funzione sarebbe
Codice sorgente - presumibilmente C/C++

  1. char *converti(char caratteri[])



Ultimo ma non per importanza, attento alle variabili.
Se vuoi usare la funzione cosi, tutte le variabili che hai dichiarato prima devono essere GLOBALI, quelle LOCALI (dichiarate nel main o nelle altre funzioni) non esistono fuori dalle loro funzioni (si chiama scope delle variabili). :k:

EDIT:
Nel tuo caso cmq la funzione deve essere di tipo void visto che usi tutte variabili globali.
La funzione agisce direttamente sul vettore parola, quindi non devi ritornare nulla

Ultima modifica effettuata da ingMark il 06/11/2009 alle 22:08


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 11:12
Sabato, 14/11/2009
Testo quotato

Postato originariamente da ingMark:

ricorda che in c le variabili vanno dichiarate tutte all'inizio, ma cosa più importante il c non permette di copiare un vettore in un altro vettore.
devi usare un ciclo come ti ha mostrato Guglielmo :k:



char a[LEN_A];
char b[LEN_B];
....
memcp(b, a, sizeof(a));

cosìsi copiano gli array.


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote