[Risolto]Copia di stringhe

Chiedo un vostro parere perchè non sono riuscito a trovare la soluzione da nessuna parte.
Faccio un esempio per copiare due strighe:

char s1[]="ciao";
char s2[40];
strcpy (s2,s1);

Con il codice precedente il contenuto di s1 va su s2 e mette automaticamente il carattere '\0'.
La domanda però è questa: se fosse un array di stringhe

s2[10][40]

e volessi copiare s1 nella locazione ad esempio

s2[3][x]

cosa dovrei fare?

ciao,

dovresti fare:

strcpy(s2[3]+x,s1);

perchè?

int x=...;
strcpy (s2[3][x],s1);

non è bello?
d'accordo che l'aritmetica dei puntatori funziona bene, e di solito è più leggibile
ma in questo caso no, avendo sia puntatori che indici, usarla rende meno leggibile il codice

Aspetta, ma quello cha abbiamo scritto vale per array bidimensionale di stringhe

char * s2[][]

per un singolo array di stringhe

char s2[][]

la cosa è differente
Lo OP quale intendeva?

Standardoil:
Lo OP quale intendeva?

Beh se dice che l'array è definito come "s2[10][40]" significa un array di 10 stringhe da massimo 40 (39) caratteri, quindi quando chiede di copiare s1 in "s2[3][ x ]" immagino intendesse dire in realtà "s2[3]" quindi semplicemente:

strcpy(s2[3],s1);

ossia la stringa di posizione 3 (la quarta).

Ma ovviamente deve confermarci lui cosa intendeva dire.. :wink:

In effetti concorderei con te
Ma lo OP ci ha messo in confusione con questo

Antonio81:
e volessi copiare s1 nella locazione ad esempio

s2[3][x]

cosa dovrei fare?

dove sembra usare un singolo elemento come puntatore a carattere, non come carattere
Quindi lo array sembra un array bidimensionale di puntatori a carattere

Ho visto che mettendo quel X mi sono spiegato male. Intendevo se si potesse fare con strcopy ciò che fa il seguente codice:

char s1[]="ciao";
char s2[10][40];
char i=0;
while (s1[i]!='\0')
{
s2[3][i]=s1[i];
i++;
}

Ti sei sccorto, vero, che ti è già stata data, questa risposta?

Quale sarebbe che non ho capito?

Leggere bene le risposte, aiuta a capire

  1. se hai un codice che fa qualcosa perché cercare una funzione che faccia lo stesso? Hai fatto la fatica di scriverlo e poi non lo usi?
  2. vuoi sapere se è possibile fare una cosa in un dato modo? Prova a farla in quel dato modo

Standardoil - Certo, se avessi capito cos'è l'OP.
Silente - Forse perchè la prossima volta invece di scrivere 4 righe di codice, ne scriverei soltanto una?

Grazie

OP "original poster" ovvero quello che ha cominciato, in questo caso tu

tra orso2001, io e docdoc abbiamo scritto tre cose
una delle tre sarà la tua soluzione?
a leggere si capisce, giuro: ho provato................

Scusami ma io non ci ero arrivato, anche perchè non ho ora disponibile l'arduino per provare.

Questo è un problema di C, non ti serve Arduino per provare. Installa un qualunque compilatore (tipo code::blocks) e prova direttamente sul PC.

Non servirebbe nemmeno piu' di tanto provare
non è che si è "indicata" la soluzione
è stata proprio data, esattamente nella forma che serviva
che poi se lo OP non ha arduino per sfruttarla, non lo aveva nemmeno per necessitarla.......

SukkoPera:
Questo è un problema di C, non ti serve Arduino per provare. Installa un qualunque compilatore (tipo code::blocks) e prova direttamente sul PC.

Si, aggiungo anche che ritengo abbastanza utile anche provare con TinkerCad un simulatore online gratuito fatto relativamente benino, buono per sperimentare con Arduino (ma non solo) senza necessità di avere l'hardware e soprattutto puoi fare debug con punti di interruzione e visualizzazione del contenuto delle variabili. Non è proprio perfetto, ad esempio puoi usare solo le librerie che sono previste nell'ambiente, puoi aggiungere solo i componenti che ti mostra, ed ha qualche altra cosettina secondaria, ma insomma, a volte è utile, ma lo è in particolar modo per chi vuole "sperimentare" e prendere pratica col linguaggio e l'ambiente, senza necessità di installare nulla sul tuo PC.

Standardoil:
che poi se lo OP non ha arduino per sfruttarla, non lo aveva nemmeno per necessitarla.......

Già, me lo chiedevo anche io... :wink:

Standardoil:
che poi se lo OP non ha arduino per sfruttarla, non lo aveva nemmeno per necessitarla.......

forse perché il giorno in cui ho chiesto ce l'avevo e ieri no? Che ne sai tu?

Inoltre non si può voler imparare qualcosa? Bisogna per forza averne la necessità?