typumwandlung



  • hi,

    mein prog stürzt bei dem stück code ab.

    wieso?

    danke

    PBYTE	pText ;
    char	pZeichen ;
    int    iFileLenge ;
    iFileLenge = GetFileSize (hFile, NULL) ;
    pText = (PBYTE) malloc (iFileLenge + 1) ;
    ReadFile (hFile, pText, iFileLenge, &dwBytesRead, NULL) ;
    pText[iFileLenge] = '\0' ;
    while (iFileLenge >= iZaehler){
    	pZeichen = (char) pText[iZaehler] ;
    	send (sock, (char*) pZeichen, 1, 0) ;
    	iZaehler++ ;
    }
    

    hFile ein handle auf eine textdatei.
    socket verbindung besteht.



  • Eins vorweg: Du solltest ein gutes C bzw. C++ Tutorial oder Buch lesen; anscheinend fehlt dir grundlegendes Verständnis.

    send erwartet als 2. Parameter einen char*. Du kannst aber nicht einfach einen char in einen char* konvertieren, indem du mit der Brechstange kommst und (char*) davorschreibst.
    char* ist ein Zeiger auf eines oder mehrere Zeichen, also ein String. char ist nur ein einzelnes Zeichen, hat nichts mit Zeigern zu tun und lässt sich auch nicht in einen solchen umwandeln.

    Warum übergibst du pText nicht einfach direkt an send?



  • cd9000 schrieb:

    Warum übergibst du pText nicht einfach direkt an send?

    ich wollte gerne zeichen für zeíchen übergeben.. (muss so sei).

    cd9000 schrieb:

    Eins vorweg: Du solltest ein gutes C bzw. C++ Tutorial oder Buch lesen; anscheinend fehlt dir grundlegendes Verständnis.

    send erwartet als 2. Parameter einen char*. Du kannst aber nicht einfach einen char in einen char* konvertieren, indem du mit der Brechstange kommst und (char*) davorschreibst.
    char* ist ein Zeiger auf eines oder mehrere Zeichen, also ein String. char ist nur ein einzelnes Zeichen, hat nichts mit Zeigern zu tun und lässt sich auch nicht in einen solchen umwandeln.

    hast recht... mit den zeigern habe ich so meine probleme....

    ich schaue ab ab das das problem war...

    thx



  • typumwandlung schrieb:

    ich wollte gerne zeichen für zeíchen übergeben.. (muss so sei).

    Dann bist du falsch informiert. Es ist völlig egal ob man send zeichenweise füttert oder blockweise.



  • Mach's so, dann läuft's:

    send (sock, &pZeichen, 1, 0) ;
    

Anmelden zum Antworten