String ende finden?



  • Ich habe folgende funktion, die einen string in einem textfeld ausgibt:

    void addChatMsg(char* msg)
    {
    	int ilen;
    	char buf[2048];
    	char* buf2;
    	buf2 = (char*)malloc(2048+strlen(msg));
    	ilen = SendMessage(chatWin,WM_GETTEXTLENGTH,0,0);
    	if(ilen > 2048)
    		ilen = 2048;
    	SendMessage(chatWin,WM_GETTEXT,ilen+1,(long)buf);
    	sprintf(buf2,"%s\r\n%s",buf,msg);
    	SendMessage(chatWin,WM_SETTEXT,0,(long)buf2);
    	SendMessage(chatWin,EM_LINESCROLL,0,99);
    }
    

    wenn ich jetzt aber einen string übergebe:

    char tmpbuf[256];
    		sprintf(tmpbuf,"Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d",WSAGetLastError());
    		addChatMsg(tmpbuf);
    

    dann werden alle 256 zeichen dargestellt, auch wenn der string viel kuerzer ist! (ich hab dann lauter striche im edit)

    wie kann ich das ende von meinem string finden? danke



  • Strings Enden mit einem '\0'. Alles andere ist kein String.

    1. Caste nicht den Rückgabewert von malloc!
    2. (long)buf2 <-- äh!?!
    3. if(ilen > 2048) du weißt das ilen vorzeichenbehaftet ist?
    4. ilen+1 schaut verdächtig nach einem Off-by-One-Error aus



  • rüdiger schrieb:

    Strings Enden mit einem '\0'. Alles andere ist kein String.

    1. Caste nicht den Rückgabewert von malloc!
    2. (long)buf2 <-- äh!?!
    3. if(ilen > 2048) du weißt das ilen vorzeichenbehaftet ist?
    4. ilen+1 schaut verdächtig nach einem Off-by-One-Error aus

    wäääh nicht nur fehler aufzählen, sondern erklären wie ichs besser mache! ich bin doch nur ein anfänger 😞



  • hallo ? kann mir nicht vielleicht jmd sagen, wie ich nen string erstelle, in den mich mit sprintf etwas reinschreiben kann wobei der string korrekt beendet wird ?



  • pixartist schrieb:

    hallo ? kann mir nicht vielleicht jmd sagen, wie ich nen string erstelle, in den mich mit sprintf etwas reinschreiben kann wobei der string korrekt beendet wird ?

    Hi,
    ich greife mal ein Beispiel von dir auf:

    char tmpbuf[256];
            sprintf(tmpbuf,"Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d \0",WSAGetLastError());
            addChatMsg(tmpbuf);
    

    btw. um es mal vorwegzugreifen. Leg dir am besten eine msg-catalog datei an in der du alle möglichen Fehler dokumentierst (über eine ID ansprechbar), so brauchst die nicht alle möglichen Fehler hart ins Programm zu coden.

    Beim Start kannst du dann die MSG-Catalog Datei in ein Array laden und verwalten.


Anmelden zum Antworten