Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Tömma en char buffer[256]?

Postades av 2007-12-11 00:19:50 - Eric Johansson, i forum c++, Tråden har 9 Kommentarer och lästs av 1686 personer

Tjena jag har problem med att tömma en char buffer[256] som tar emot data via recv(); (winsock)
prövar srtcpy(buffer,""); men det funkar inte.. tar emot rätt text men fyller på med tidigare data??
om nån nu fattar vad jag skriver...


Tack på förhand...


Svara

Sv: Tömma en char buffer[256]?

Postades av 2007-12-11 07:50:03 - Per Persson

Frågan är väl främst om du förstår vad en <b>char buffer[256]</b> är. Du har 256 heltal med värden mellan -128 och +127. Vad menar du med att tömma? Vill du sätta alla dessa heltal till 0? Räcker det med att sätta det första till 0? För du vill väl inte plocka bort alla talen? Det går nämligen inte...


Svara

Sv:Tömma en char buffer[256]?

Postades av 2007-12-11 10:24:30 - Niklas Jansson

<b>>Du har 256 heltal med värden mellan -128 och +127</b>
Njaae... I allmänhet är char unsigned, och då har man tal mellan 0 och 255, alternativt tecken beroende på hur man tolkar, förstås.


Vad gäller frågeställarens själva problem så misstänker jag att vad som händer är följande:
1. En buffer ligger och väntar. Det är en char-array, eller en c-sträng.
2. En c-sträng avslutas med tecknet '\0' (vilket motsvarar talet 0).
3. recv placerar bara ut en rad tecken.
4. Du läser in det som en sträng. Detta innebär att om det först stod "aaa\0", du sen får in 'b' så är det som står i bufferten 'baa\0', och det blir strängen.

Följande lösningar finns:
-Fyll hela bufferten med 0-or. Eftersom du ändå grötar runt i C så kan du köra med memset. Inte speciellt snyggt och relativt resurskrävande.
-Ta reda på hur mycket som är skickat, brukar man kunna få från recv, kalla det n. Sätt buffer[n]='\0', använd buffer som en vanlig sträng.
-Ta reda på hur mycket som är skickat, använd bara de n första tecknen, det kan man göra via strncpy, och övriga strn...-funktioner.


Svara

Sv: Tömma en char buffer[256]?

Postades av 2007-12-11 19:53:01 - Per Persson

<b>Njaae... I allmänhet är char unsigned, och då har man tal mellan 0 och 255, alternativt tecken beroende på hur man tolkar, förstås.</b>

<info>The char type is signed by default on some computers, but unsigned on others.</info>
http://www.crasseux.com/books/ctutorial/The-char-type.html


Svara

Sv:Tömma en char buffer[256]?

Postades av 2007-12-11 22:18:32 - Niklas Jansson

<b>>I allmänhet</b>


Svara

Sv: Tömma en char buffer[256]?

Postades av 2007-12-11 22:45:04 - Per Persson

Det som gäller "I allmänhet" är att char kan ta värden mellan 0 och 127. Sedan finns det två alternativ: att char även kan ta värden mellan 128 och 255 (unsigned) eller att char även kan ta värden mellan -128 och -1 (signed).

;-)


Svara

Sv: Tömma en char buffer[256]?

Postades av 2007-12-27 16:09:16 - Eric Johansson

Tack för kommentarerna, jag kom fram till att det enklaste sättet att lösa det på var:

for(int i=0; i < 256; i++)
{
			buf[i] = '\0';
}


Svara

Sv:Tömma en char buffer[256]?

Postades av 2007-12-27 17:17:15 - Per Persson

Det finns en färdig funktion:
memset(buf, 0, 256);


Svara

Sv: Tömma en char buffer[256]?

Postades av 2007-12-27 17:17:57 - Per Persson

Det finns en färdig funktion:
memset(buf, 0, 256);

Edit: http://www.cplusplus.com/reference/clibrary/cstring/memset.html


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 868
27 965
271 770
401
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies