我是 c 新手,想将字符串分成两部分。这是我的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void test(char** a, char** b)
{
const char * c = "abcdef";
*a = (char *)malloc(4* sizeof(char));
*b = (char *)malloc(4* sizeof(char));
strncpy(*a, c, 3);
*a[3] = '\0';
fprintf(stderr, "a -> %s\n", *a);
strncpy(*b, c+3, 3);
*b[3] = '\0';
fprintf(stderr, "b -> %s\n", *b);
}
int main()
{
setvbuf (stderr, NULL, _IONBF, 0);
char *a = NULL;
char *b = NULL;
test(&a, &b);
fprintf(stderr, "a -> %s\n", *a);
fprintf(stderr, "b -> %s\n", *b);
}
我希望有abc
on a
变量和def
在变量中b
。但我的问题是它失败了Segmentation Fault
。运行此命令后,我得到以下输出:
a -> abc
Segmentation fault
我不明白为什么。我在用着cygwin
并用命令构建它
gcc test.cpp -o test.exe
抱歉,如果问题听起来很愚蠢。谢谢。