0
私はcで新しく、2つの部分で文字列を区切りたいと思います。ここに私のコードは次のとおりです。同じソースの2番目の呼び出しで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);
}
私は変数b
にabc
a
上の変数とdef
を持っていると思います。しかし、私の問題は、それがSegmentation Fault
で失敗するということです。私がこれを実行した後、私はこの出力を得ます:
a -> abc
Segmentation fault
なぜ理解できません。私はcygwin
を使用して、問題が愚かに聞こえる場合
gcc test.cpp -o test.exe
申し訳コマンドでそれを構築しています。ありがとうございました。
と生臭い何かが自分であることをあなたに言ったありがとうございました:) – Jakomo
注 '[0] [3]'また、括弧を気にすることなく、働くだろうということ。 – ShadowRanger
@ShadowRanger: "*カッコを気にすることなく*"同じ数の追加のカッコ/ブラケットとそれでもなお1文字( '0')を入力する...--) – alk