unsigned char: Länge der Zeichenkette (_mbslen)



  • Hi,

    hab folgendes Programm geschrieben:

    #include <stdio.h>
    #include <iostream.h>
    #include <windows.h>
    #include <mbstring.h>
    
    typedef unsigned char BYTE;
    
    int main()
    {
    int n = 8;
    BYTE * Obj;
    Obj = (BYTE*) malloc(sizeof(BYTE)*n);
    char entr[] = "no_entry";
    for(int i=0;i<8;i++)
    {
    	Obj[i] = entr[i];
    }
    cout<<"\nOBJ: "<<*Obj<<endl;
    int length_uch=_mbslen(Obj);
    free(Obj);
    return 0;
    }
    

    Warum ist length_uch (Länge von Obj) 12 und nicht 8??? Ich hab doch "no_entry" an Obj in der Schleife übergeben????



  • Du hast die Endemarkierung des Strings nicht mitkopiert. Davon abgesehen passt die Frage hier nicht ganz hin -- der Fehler könnte schließlich auch in einer fehlerhaften Benutzung vom _mbslen liegen, und die Funktion gibts im ANSI-Standard nicht.


Anmelden zum Antworten