PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/Linux - Stringteilung - Socket



ulf-s
10-02-2002, 16:29
Hallo!
Ich habe folgendes Problem:

Ich habe ein kleines Socket-Programm (Newbie) geschrieben, dass eine Connection annimmt.

Nun wollte ich mit dem Client Programm (Windows) kommunizieren.

Der Client schickt verschiedene Commands, die 10 Zeichen gross sind.
Ich habe im Server dann folgendes geschrieben

size=recv(remote_s,data,10,0);

doch wenn ich:

printf("COMMAND: %s", data);

mache, dann schreibt er hinter das geschickte noch ein paar andere Zeichen im ASCII und einige Leerzeilen.

Woran kann das liegen?

Eine weitere Frage von mir ist bezüglich Strings:
Ich habe einen String
char variable[12] = {"ABCDEFGHIJKL"}
wobei auch die variable einen anderen inhalt haben könnte.
Nun wollte ich den Inhalt an einer bestimmten stellen wie von
variable[4 (bis) 10] in eine andere variable schreiben.
Wie geht das?

Danke im vorraus
Ulf

denis
10-02-2002, 21:24
Hi,

zum ersten)
Liegt am fehlenden null am Ende. Mach mal:


size=recv(remote_s,data,10,0);
data[size] = 0;

Dann sollte es funktionieren.

zum zweiten)
So zum Beispiel:


#include <string.h>
...
char variable[12] = {"ABCDEFGHIJKL"};
char ziel[5];
strncpy(ziel, variable+3, 4); // Wobei hier 3 die 3. Stelle ist und 4 die Anzahl der Zeichen
ziel[4] = 0;

Aber aufpassen das in ziel auch genug Platz ist ;-)

ulf-s
10-02-2002, 21:30
Danke, es hat geklappt!

zu 1.
size=recv(remote_s,data,10,0);

size (anzahl der empfangenen bytes)?
und ich sag er soll nicht mehr weitermachen sie auszugeben --> 0?

zu 2.
verstanden :)

Also, nochmals vielen dank,
Ulf

denis
10-02-2002, 22:09
Jo,
size ist die Anzahl der Bytes die empfangen wurden.
Weil printf bis zur null ausgibt aber recv die null nicht mit reinschreibt muss die null per hand nachgesetzt werden.