Hallo, ich habe ein Problem bei meinem Projekt wo ich einen Analogwert
einlese und diesen Wert über ein Terminal ausgebe.
Hier mal der Code dazu:
void Wert(float wert)
{
char ascii[50];
int8 i;
sprintf(ascii,"Analogwert %3.1f V",wert);
For (i=0;i<16;i++)
{
putc(ascii[i]);
}
}
Das Problem ist das ich nicht weis wie lang dieser Wert ist und gib in
der Schleife einfach mal 16 an. Wenn der Wert aber kürzer ist z.B. bei
0.0 werden mir unnötige Nullen angezeigt.
Ich habe die For-Schleifenbedingung auch schon anderst geschrieben aber
beides hat nicht funktioniert:
For (i=0;i<=ascii.length();i++) oder For (i=0;ascii[i]=='V';i++).
Gibt es noch eine Möglichkeit die Länge abzufragen und was ist bei den
beiden Varianten falsch?
Gruß
Ändere For (i=0;i<16;i++) in for (i=0;i<strlen(ascii);i++) Falls noch nicht eingebunden, mache noch folgendes Include zu Beginn der Quelldatei in der strlen() benutzt wird. #include <string.h> http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/strlen.html
Gast
#1598985
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
oder, falls diese Nullterminierung als letztes mitgesendet werden soll:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
strlen würd ich nicht nehmen, da das letztendlich zwei Schleifen über dasselbe produziert.
Danke für die schnelle Antwort! Ich bin mit C nicht so vertraut, was bedeutet der Operator '<>' weil bei mir wird eine Fehlermeldung dabei angezeigt.
<> ist wahrscheinlich ein Flüchtigkeitsfehler von Matthias Ändere <> in !=
Danke hat funktioniert!
Gast
#1599106
Stefan B. schrieb:
> <> ist wahrscheinlich ein Flüchtigkeitsfehler von Matthias
Ja. Auf Arbeit programmiere ich in ST. Da ist <> das ungleich-Zeichen.
...oder gleich in
1 | |
Wenn beim Auslesen von ascii[i] eine 0 erscheint (Stringendezeichen) wird die Schleife abgebrochen. Aber wahrscheinlich wird der Compiler aus
1 | |
und
1 | |
eh den selben Code erzeugen. Viele Grüße, Steffen
Das Vernünftigste wäre es allerdings, sich einen kleinen Baukasten zurechtzulegen (und bei der Stringausgabe auf die Indexschreibweise zu verzichten. Braucht kein Mensch)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
So ist man dann für alle Fälle gerüstet und muss das Rad nicht immer neu erfinden. Eine Stringausgabe braucht man sowieso praktisch immer und warum soll man die nicht für die Ausgabe von ... äh ... Strings gleich mitbenutzen.
Gast
#1599131
>So ist man dann für alle Fälle gerüstet und muss das Rad nicht immer neu >erfinden. Tja.. Das machen wir auf Arbeit seit Jahren. Nur leider wird das immer eckiger....
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.