mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik String leeren


Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
ich habe ein Buffer so deklariert:
char Buffer[3][50], danach auch dem Display anzeigen lassen.
Buffer[0][]
Buffer[1][]
Buffer[2][]

wie  kann ich die buffer leerer damit ich nicht nochmal den gleichen 
alten Inhalt angezeigt bekomme?

danke

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In einer Schleife in alle Elemente ein Leerzeichen schreiben?

MFG
Falk

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Buffer[0][0] = "\0";
Buffer[1][0] = "\0";
Buffer[2][0] = "\0";

Dann muß deine Anzeigenausgaberoutine nur "\0" als Stringende erkennen 
und die Ausgabe abbrechen.
Also erst nachgucken, ob was anderes als "\0" ausgegeben werden soll und 
das gegebenenfalls ausgeben.

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so habe ich es versucht aber klappt nicht: da ich den Buffer mit 50 
initialisiert habe.

for(i=0;i<50;i++)
{
Buffer[0][i] = ' ';
Buffer[1][i] = ' ';
Buffer[2][i] = ' ';
}

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>char Buffer[3][50];

Versuch es mal mit
unsigned char Buffer[3][50];

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>so habe ich es versucht aber klappt nicht

Irgendwie muß deine Ausgaberoutine ja merken, dass der Stroíng zuende 
oder leer ist.
Wie macht sie das?

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vor der ausgabe habe ich immer mit '\0' das string beendet, ich versuch 
erstmal mit unsigned

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich 'hallo word' löschen will, dann ergibt sich das:
' a l  w r '.

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn ich 'hallo word' löschen will, dann ergibt sich das:
>' a l  w r '

In welcher Version? Mit '\0' oder mit ' '?
Wenn du die Zeile wieder komplett ausgeben willst, ohne dass da 
irgendwelcher Text drinsteht, solltest du Leerzeichen in den String 
schreiben.
Ich vermute, dein Problem liegt im Bereich der Ausgaberoutine.
Poste doch mal deinen Code!

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for(;;)
{
... hier kommt ein While schliefe... neues Zeichen!! ja!
{
Buffer[Next] = RXBUF1;
Next++;
}
Buffer[Next] = '\0';
...
...hier wird auf dem Display angezeigt.

das ganze funktioniert soweit gut.

...und nun möchte ich den Buffer ausleeren.

}

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie die Daten in deinen Puffer kommen ist (mir) relativ egal.

>wenn ich 'hallo word' löschen will, dann ergibt sich das:
>' a l  w r '

Wie sieht denn dein Löschvorgang aus? (Ist das der von oben?)
Wie sieht deine Ausgabe-Routine aus? (Oder ist das geheim? In diesem 
Fall sollte man sich aber überlegen, ob man überhaupt in einem Forum 
nach Hilfe fragen sollte...)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jau, wieder mal ne hübsche Raterunde hier.

Wie findet man Fehler im Code ohne den Code ?


Peter

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie findet man Fehler im Code ohne den Code ?

Kristall-Kugel?
Selber schreiben, bis der Fehler auftritt...

Autor: kolrabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> char Buffer[3][50]

> wie  kann ich die buffer leerer damit ich nicht nochmal den gleichen
> alten Inhalt angezeigt bekomme?

memset(Buffer, 0, sizeof(Buffer));

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leute wenn man kein bock hat zu antworten dann nicht. aber bitte kein 
kritik.

Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier einen einfache Lösung.

#include <string.h>

int main(void)
{
char Buffer[3][50];
Buffer[0][0]='A';
Buffer[1][0]='B';
Buffer[2][49]='C';


memset(&Buffer,0,150);

return 0;

MfG

Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ooops, kohlrabi war schneller

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>leute wenn man kein bock hat zu antworten dann nicht. aber bitte kein
>kritik.

Was hilft es dir, wenn du eine Frage stellst, auf die niemand antwortet 
bzw. keine vernünftige Antwort geben kann, weil ihm gewisse Dinge zwecks 
Fehleranalyse fehlen?

Bis jetzt war das, was von dir kam nur etwas, wo man raten konnte.
Entweder postest du mal vernünftige Code-Fragmente, oder dir wird 
niemand helfen (können).
Jammern hilft da überhaupt nicht.
Deine ursprüngliche Frage wurde inzwischen mehrfach beantwortet. Da aber 
immer noch ein Fehler auftritt, wird das Problem an einer anderen Stelle 
sitzen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alain wrote:
> leute wenn man kein bock hat zu antworten dann nicht. aber bitte kein
> kritik.


Wenn Du keine Hinweise auf die Fehlerquelle (sitzt in diesem Fall vor 
Deinem Bildschirm) verträgst, bitte.


Es ist ja Dein Bier, wenn Du Dein Problem nicht gelöst haben willst.


Peter

Autor: Alain (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke Freddy,
es hat wirklich funktioniert und der Buffer ist leer.


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.