char* pathname = "/usr/temp/";
char* filename = "abcde";
char* pathname_2 = (char*)malloc(strlen(pathname));
if (pathname_2 == NULL)
{
printf("Can't get memory for that many values.\n");
exit(EXIT_FAILURE);
}
int a = strlen(pathname_2); printf("strlen(pathname_2) = %d\n", a);
printf("pathname_2 = %s\n", pathname_2);
strncpy_s(pathname_2, strlen(pathname_2), pathname,strlen(pathname));
printf("pathname_2 = %s\n", pathname_2);
strcat_s(pathname_2, strlen(pathname_2) + strlen(filename) + 1, filename);
int b = strlen(pathname_2); printf("strlen(pathname_2) = %d\n", b);
printf("pathname_2 = %s\n", pathname_2);
free(pathname_2);
pathname_2 = NULL;
这是我malloc 16个字节的内存空间
int a = strlen(pathname_2);
这里是有问题的,因为pathname_2字符串你没有初始化啊。所以strlen会一直搜索到第一个字符串结束符'\0'为止,实际长度可能为任何数,比如0。
a的值你继续用strlen(pathname)就行了