Ho alcuni problemi in C con i puntatori e le strutture: Ho 2 entità della struct Signal
e il puntatore activeSignal
per memorizzare una delle entità. Ora, voglio usare questa entità "memorizzata" nella mia funzione printParameters()
per stampare i valori della mia struct. Sfortunatamente, il display del mio microcontrollore stampa alcuni geroglifici al posto del mio valore. Devo ammettere che non sono completamente guardando attraverso puntatore-aritmetica ...Puntatore su Struct utilizzato nella funzione
struct SigParameter {
char *name;
int value;
};
struct Signal {
struct SigParameter signalchar;
};
int main(void) {
struct Signal s1;
struct Signal s2;
s1.signalchar.name = "Sinus";
s2.signalchar.name = "Rect";
struct Signal *activeSignal = &s1;
printParameters(activeSignal);
}
void printParameters(struct Signal *s) {
lcdPrintf(0,11,9,"%s", s->signalchar.name);
}
Non sono affatto un esperto di C, ma questo mi sembra giusto. Funziona correttamente se si sostituisce 's-> signalchar.name' con semplicemente' "Hello" '? –
Humor me per un momento e prova 'printf ("% s ", s-> signalchar.name);'. Il codice mi sta bene; a parte il fatto che 'name' dovrebbe essere un' const char * 'se assegni letterali ad esso. – Bathsheba
Sei sicuro che 'lcdPrintf' funziona correttamente? Hai provato 'lcdPrintf (0,11,9,"% s "," Sinus ");'? Aggiungi punto e virgola nella tua struct. –