Forum: PC-Programmierung ANSI C: strtrc Funktion


von Entwickler (Gast)


Lesenswert?

Hallo,

in einer ANSI C Applikation unter Windows wird die Funktion strstr
eingesetzt um einen char Puffer nach bestimmte Wörter zu suchen ob
diese Wörte vorkommen:
1
strstr(UartBuffer, "Test Data")

Obwohl diese beiden Wörter im Puffer vorkommen erscheint beim debuggen
Wert: 0x00000000 <NULL>

von Oliver S. (oliverso)


Lesenswert?

Aha. Schön, das du uns das mitteilst.

Oliver

von Entwickler (Gast)


Lesenswert?

UartBuffer hat die größe von 1024.

von Entwickler (Gast)


Lesenswert?

Eigentlich sollten auch hier der Text immer gefunden werden. Tut es aber 
nicht.

von Oliver S. (oliverso)


Lesenswert?

Dann ist entweder dein strstr kaputt, oder dein Programm ist fehlerhaft 
und/oder macht nicht das, was du vermutest. Die Wahrscheinlichkeit für 
ersteres ist nahe 0%, für letzteres nahe 100%.

Oliver

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Entwickler schrieb:
> Obwohl diese beiden Wörter im Puffer vorkommen erscheint beim debuggen
> Wert: 0

Worin erscheint die Null? In deinem Beispiel ist nichts drin wo du den 
Rückgabewert speicherst (und auch nicht wo du diesen verwendest).

von Entwickler (Gast)


Lesenswert?

Die FUnktion wird in einem Uart Callback ausgeführt. Wüsste jetzt nicht 
wo ich genau was verbessern sollte.

von Walter T. (nicolas)


Lesenswert?

Meine Glaskugel sagt "16-Bit-Zeichensatz".

von Joachim B. (jar)


Lesenswert?

strtrc Funktion

clickbait oder Schlampigkeit?
Wer so "entwickelt" muss sich über Fehler nicht wundern

von Entwickler (Gast)


Lesenswert?

Ok wenn es nach eurer Meinung schlampig ist. Bin ich nach wie vor 
interessiert woran es liegen könnte. Wenn debugge kann ich den Puffer 
anschauen. Da liegt auch der Text exakt so vor.

von PittyJ (Gast)


Lesenswert?

Dann schreibe doch deine eigene strstr() Funktion, die so geht wie du es 
möchtest.
Die ist dann auch einfacher zu debuggen. Man könnte darin mit printf 
Ausgaben einfügen oder Zähler anzeigen lassen.

Wobei ich eher das Gefühl habe, dass deine Probleme beim Debuggen 
liegen. Aber das ist nur so ein Gefühl.

von Joachim B. (jar)


Lesenswert?

Walter T. schrieb:
> Meine Glaskugel sagt "16-Bit-Zeichensatz".

meine auch, gerade unter windows ärgert mich der 16-bit Zeichensatz, 
aber auch das ist lösbar!

Ich lernte, daß Computer, Compiler, Interpreter bei Tippfehler zu oft 
den Dienst verweigern.

von PittyJ (Gast)


Lesenswert?

Noch ein Kommentar. Alleine der Nickname ist doch schon ein Schlag ins 
Gesicht der übrigen Leute hier.

Und wenn du uns nicht mitteilst, was genau in UartBuffer steht, dann ist 
doch alles nur eine Raterei.

Da du ja im Debugger bist, mach einen Dump von UartBuffer und ein Dump 
von
"Test Data".
Dann wird schon vieles klarer werden.

von Entwickler (Gast)


Lesenswert?

Ok liegt wohl an meiner Implementierung. Da stimmt was nicht mit meiner 
Serialport Implementierung.

von A. S. (Gast)


Lesenswert?

Entwickler schrieb:
> Ok wenn es nach eurer Meinung schlampig ist.

a) der Thread-Titel

b) der Beispiel-Code

c) Deine Fehlerbeschreibung

von Löppt (Gast)


Lesenswert?

A. S. schrieb:
> Entwickler schrieb:
>
>> Ok wenn es nach eurer Meinung schlampig ist.
>
> a) der Thread-Titel
> b) der Beispiel-Code
> c) Deine Fehlerbeschreibung

Er hat ja nicht einmal eine Frage gestellt. Dein Kommentar nimmt ein 
Hilfegesuch an, oder?

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

A. S. schrieb:
> Entwickler schrieb:
>> Ok wenn es nach eurer Meinung schlampig ist.
>
> a) der Thread-Titel
>
> b) der Beispiel-Code
>
> c) Deine Fehlerbeschreibung

d) Die Vorgehensweise.

Nämlich mit char-Funktionen in einem UART-Puffer rumzumachen, der 
aufgrund seiner Funktion erst mal Binärdaten enthält und wo die 
Null-Terminierung Zufall ist.

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.