Mam pewne problemy w C ze wskaźnikami i strukturami: Mam 2 elementy struktury Signal
i wskaźnik activeSignal
do przechowywania jednego z elementów. Teraz chcę użyć tej "przechowywanej" encji w mojej funkcji printParameters()
, aby wydrukować wartości mojej struktury. Niestety, mój wyświetlacz mikrokontrolera wypisuje niektóre hieroglify zamiast mojej wartości. Muszę przyznać, że nie jestem całkowicie pominie wskaźnik-arytmetyki ...Wskaźnik na platformie używanej w funkcji
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);
}
Nie jestem ekspertem od C, ale wydaje mi się to słuszne. Czy działa poprawnie, jeśli zastąpisz 's-> signalchar.name' po prostu' "Hello" '? –
Uspokój się na chwilę i wypróbuj 'printf ("% s ", s-> signalchar.name);'. Kod wygląda dobrze dla mnie; poza tym, że 'name' powinno być' const char * 'jeśli przypisujesz do niego literały. – Bathsheba
Czy jesteś pewien, że 'lcdPrintf' działa poprawnie? Czy próbowałeś 'lcdPrintf (0,11,9,"% s "," Sinus ");'? Dodaj średnik w swojej strukturze. –