mikrocontroller.net

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


Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich wollte fragen:

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

Ich habe hier ein Bsp:
 
//Eingabe
sci0_puts("\nBitte Kommando eingeben:");
sci0_gets(command);

while (commandsub != ':'){

commandsub = command[y];
y++;

}

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!

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Walter S. (avatar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jochen R. schrieb:
> Hoffe ihr könnt mir helfen!

bei den Hausaufgaben?

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht 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:

sci0_puts("\nBitte Kommando eingeben:");
sci0_gets(command);

while (commandsub != ':'){

commandsub = command[y];
y++;

}

commandid[y] = command[y];

 


//Ausgabe
sci0_puts("\nAusgabe: ");
sci0_puts(commandid);


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

THX!!

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was noch zusätzlich zu erwähnen ist:

Ich nutze einen Freescale µC! :)

Hab ich ganz vergessen zu sagen! Sorry!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt noch vorher ;)
char commandsub = 0;
char commandid[10];
int y =0;

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Initialisierung sollte jedesmal nach dem Einlesen eines neuen 
Kommandos erfolgen.

Hast Du Dir meine Frage mal angesehen?

Autor: J. R. (cia_man)
Datum:

Bewertung
0 lesenswert
nicht 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????

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Edgar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char *ptr = command;
while(*ptr){
  if(*ptr == ':'){
    *ptr = 0;
    break;
  }
  ptr++;
}
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.