헷갈리기 쉬운 문자열 함수 null character 처리 결과

예제 strncpy 1)
    char *strNum = "1234567890";        // null 포함 11 character
    char strBuf[12] = "ABCDEFGHIJK";    // null 포함 12 character

    printf("\n");
    printf(" strNum = \"%s\", strlen = %d \n", strNum, strlen(strNum));
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    strncpy(strBuf, strNum, 10);
    printf(" strBuf <----strncpy(n:10)---- strNum \n");

    printf("\n");
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    ----------------------------- 결과 -------------------------------
    strNum = "1234567890", strlen = 10
    strBuf = "ABCDEFGHIJK", strlen = 11

    strBuf <----strncpy(n:10)---- strNum

    strBuf = "1234567890K", strlen = 11 
    ------------------------------------------------------------------

예제 strncpy 2)
    char *strNum = "1234567890";        // null 포함 11 character
    char strBuf[12] = "ABCDEFGHIJK";    // null 포함 12 character

    printf("\n");
    printf(" strNum = \"%s\", strlen = %d \n", strNum, strlen(strNum));
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    strncpy(strBuf, strNum, 11);
    printf(" strBuf <----strncpy(n:11)---- strNum \n");

    printf("\n");
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    ----------------------------- 결과 -------------------------------
    strNum = "1234567890", strlen = 10
    strBuf = "ABCDEFGHIJK", strlen = 11

    strBuf <----strncpy(n:11)---- strNum

    strBuf = "1234567890", strlen = 10 
    ------------------------------------------------------------------


예제 snprintf 1)
    char *strNum = "1234567890";        // null 포함 11 character
    char strBuf[12] = "ABCDEFGHIJK";    // null 포함 12 character

    printf("\n");
    printf(" strNum = \"%s\", strlen = %d \n", strNum, strlen(strNum));
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    snprintf(strBuf, 10, "%s", strNum);
    printf(" strBuf <----snprintf(n:10)---- strNum \n");

    printf("\n");
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    ----------------------------- 결과 -------------------------------
    strNum = "1234567890", strlen = 10
    strBuf = "ABCDEFGHIJK", strlen = 11

    strBuf <----snprintf(n:10)---- strNum

    strBuf = "123456789", strlen = 9 
    ------------------------------------------------------------------

예제 snprintf 2)
    char *strNum = "1234567890";        // null 포함 11 character
    char strBuf[12] = "ABCDEFGHIJK";    // null 포함 12 character

    printf("\n");
    printf(" strNum = \"%s\", strlen = %d \n", strNum, strlen(strNum));
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    snprintf(strBuf, 11, "%s", strNum);
    printf(" strBuf <----snprintf(n:11)---- strNum \n");

    printf("\n");
    printf(" strBuf = \"%s\", strlen = %d \n", strBuf, strlen(strBuf));
    printf("\n");

    ----------------------------- 결과 -------------------------------
    strNum = "1234567890", strlen = 10
    strBuf = "ABCDEFGHIJK", strlen = 11

    strBuf <----snprintf(n:11)---- strNum

    strBuf = "1234567890", strlen = 10 
    ------------------------------------------------------------------

Posted by bluekm
,