purtroppo sono un po' arrugginito su alcuni aspetti del c... e da qualche ora sto sbattendo la testa su questo problema:
ho una stringa dichiarata e inizializzata così:
struct {
char nome[10];
unsigned int punti = 0;
byte falli = 0;
byte timeout = 0;
} squadraA, squadraB;
...
strcpy(squadraA.nome,"Locali");
in varie parti del programma ho necessità di usare una funzione che mi vada a modificare il valore del campo nome.
questa funzione è una funzione generica che accetta una stringa dall'utente.
a seconda della scelta dell'utente può ritornare il nuovo valore inserito oppure ritorna il valore passato come parametro in fase di chiamata.
ho provato con:
char* function LeggiStringa(const char *valore_iniziale) {
char temp[10];
// varie operazioni
if (conferma) {
return temp;
} else {
return valore_iniziale;
}
}
char* function LeggiStringa(char valore_iniziale[10]) {
char temp[10];
// varie operazioni
if (conferma) {
return temp;
} else {
return valore_iniziale;
}
}
void function LeggiStringa(char *valore_ritorno, const char *valore_iniziale) {
char temp[10];
// varie operazioni
if (conferma) {
valore_ritorno = temp;
} else {
valore_ritorno = valore_iniziale;
}
}
void function LeggiStringa(char valore_ritorno[10], const char *valore_iniziale) {
char temp[10];
// varie operazioni
if (conferma) {
strcpy(valore_ritorno, temp);
} else {
strcpy(valore_ritorno, valore_iniziale);
}
}
il problema è che nonostante vari tentativi non sono riuscito a fare digerire al compilatore questa funzione... comunque mi tornano degli errori o delle warnings...
cercando in rete parlavano di allocazione dinamica della memoria... ma se possibile preferirei evitare...
qualcuno ha suggerimenti?