Forum: Mikrocontroller und Digitale Elektronik Frage zu While-Schleife + Folge-Problem!


von J. R. (cia_man)


Lesenswert?

Hallo!

Ich wollte fragen:

Wie programmiere ich eine While-Schleife die die Position eines 
einzelnen Zeichens findet?

Ich habe hier ein Bsp:
1
 
2
//Eingabe
3
sci0_puts("\nBitte Kommando eingeben:");
4
sci0_gets(command);
5
6
while (commandsub != ':'){
7
8
commandsub = command[y];
9
y++;
10
11
}

Danach möchte ich noch den Befehl bis zu dem Zeichen bei mir der : auf 
einen String zur Weiterverarbeitung schreiben!

Es geht mir insgesamt halt darum, dass mein Programm aus der Eingabe 
heraus weiß was es machen soll ;)

Danke schon einmal im Voraus!

Den Restcode wie Variablendef habe ich weggelassen!

Hoffe ihr könnt mir helfen!

von Johann (Gast)


Lesenswert?

Hä? Du fragst, wie man ein Zeichen in einer Zeichenkette findet und 
präsentierst gleich die Lösung --> was ist denn nun Dein Problem?

von Walter S. (avatar)


Lesenswert?

Jochen R. schrieb:
> Hoffe ihr könnt mir helfen!

bei den Hausaufgaben?

von J. R. (cia_man)


Lesenswert?

Johann schrieb:
> Hä? Du fragst, wie man ein Zeichen in einer Zeichenkette findet und
> präsentierst gleich die Lösung --> was ist denn nun Dein Problem?

Ja mein Problem ist, dass wenn ich folgendes Versuche:
1
sci0_puts("\nBitte Kommando eingeben:");
2
sci0_gets(command);
3
4
while (commandsub != ':'){
5
6
commandsub = command[y];
7
y++;
8
9
}
10
11
commandid[y] = command[y];
12
13
 
14
15
16
//Ausgabe
17
sci0_puts("\nAusgabe: ");
18
sci0_puts(commandid);

dann keine Ausgabe kommt bzw eine leere, obwohl die Eingabe logisch ist!

THX!!

von J. R. (cia_man)


Lesenswert?

Was noch zusätzlich zu erwähnen ist:

Ich nutze einen Freescale µC! :)

Hab ich ganz vergessen zu sagen! Sorry!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jochen R. schrieb:
> Ja mein Problem ist, dass wenn ich folgendes Versuche:
> [schnipp]

Wenn Du weder "commandsub" noch "y" initialisierst, ist das Ergebnis 
willkürlich.

Was passiert in Deiner While-Schleife, wenn im String "command" kein 
Doppelpunkt auftritt?

von J. R. (cia_man)


Lesenswert?

Kommt noch vorher ;)
1
char commandsub = 0;
2
char commandid[10];
3
int y =0;

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Initialisierung sollte jedesmal nach dem Einlesen eines neuen 
Kommandos erfolgen.

Hast Du Dir meine Frage mal angesehen?

von J. R. (cia_man)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Die Initialisierung sollte jedesmal nach dem Einlesen eines neuen
> Kommandos erfolgen.
>
> Hast Du Dir meine Frage mal angesehen?

Wie meinst du das????

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

>> Hast Du Dir meine Frage mal angesehen?
>
> Wie meinst du das????

Was passiert in Deiner While-Schleife, wenn im String "command" kein
Doppelpunkt auftritt?

von Edgar (Gast)


Lesenswert?

1
char *ptr = command;
2
while(*ptr){
3
  if(*ptr == ':'){
4
    *ptr = 0;
5
    break;
6
  }
7
  ptr++;
8
}
Ersetzt das Zeichen durch eine terminierende 0. Die anschließende 
Ausgabe von "command" liefert nur die Eingabe bis zum Zeichen. Sollte es 
fehlen ist Ausgabe = Eingabe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.