0
我是新來的c,並且想要將字符串分成兩部分。這裏是我的代碼:strncpy()第二次調用時出現相同的錯誤信息
#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
上a
變量和def
變量b
。但我的問題是,它與Segmentation Fault
失敗。我跑在此之後,我得到這樣的輸出:
a -> abc
Segmentation fault
我不明白爲什麼。我使用cygwin
,如果問題聽起來很愚蠢與命令
gcc test.cpp -o test.exe
對不起構建它。謝謝。
非常感謝你有鬼:) – Jakomo
注意,'A [0] [3]'也將工作,而不用擔心括號。 – ShadowRanger
@ShadowRanger:「*無需擔心括號*」相同數量的其他括號/括號,還有一個字符('0')多於鍵入...... ;-) – alk