【发布时间】:2017-10-07 12:21:53
【问题描述】:
我是 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);
}
我想在变量a 上使用abc,在变量b 上使用def。但我的问题是Segmentation Fault 失败。运行此程序后,我得到以下输出:
a -> abc
Segmentation fault
我不明白为什么。我正在使用cygwin 并使用命令构建它
gcc test.cpp -o test.exe
对不起,如果问题听起来很愚蠢。谢谢。
【问题讨论】:
标签: c string windows c-strings