如何在gcc中使用strncpy_s?

时间:2017-03-16 15:46:00

标签: c gcc c11 tr24731

我想在我的C ++程序中使用strncpy_s功能, 但我的代码无法达到strncpy_s,由于宏定义,请让我知道如何在gcc中使用strncpy_s,提前谢谢, 我的代码如下

#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{

 printf("\n\t Hello World ");
#ifdef __STDC_LIB_EXT1__
    set_constraint_handler_s(ignore_handler_s);
    char dst1[6], src1[100] = "hello";
    int r1 = strncpy_s(dst1, 6, src1, 100);      // writes 0 to r1, 6 characters to dst1
    printf("dst1 = \"%s\", r1 = %d\n", dst1,r1); // 'h','e','l','l','o','\0' to dst1

    char dst2[5], src2[7] = {'g','o','o','d','b','y','e'};
    int r2 = strncpy_s(dst2, 5, src2, 7);        // copy overflows the destination array
    printf("dst2 = \"%s\", r2 = %d\n", dst2,r2); // writes nonzero to r2,'\0' to dst2[0]

    char dst3[5];
    int r3 = strncpy_s(dst3, 5, src2, 4);        // writes 0 to r3, 5 characters to dst3
    printf("dst3 = \"%s\", r3 = %d\n", dst3,r3); // 'g', 'o', 'o', 'd', '\0' to dst3 
    printf("\n\t Bye bye!!");
#endif
}

我的代码不在ifdef里面,有没有其他方法可以使用strncpy_s。

0 个答案:

没有答案