このコードが機能しない理由について誰かに教えてもらえますか?
char *
分割関数へのポインターを渡し、バッファーを分割します。- 渡された各引数(char *)のヒープにメモリを割り当てます。
- 次に、この新しいバッファにサブストリングをstrcpyします。
- メソッドから戻って変数のいずれかを出力しようとするまでは、すべて正常に機能します。
- セグメンテーションの失敗
void split(char * buffer, int num, ...)
{
char* string;
char* tofree;
string = strdup(trim(buffer));
if (string != NULL) {
tofree = string;
va_list arguments;
//Initializing arguments to store all values after num
va_start ( arguments, num );
int i = 0;
for (i = 0; i < num; i++ )
{
//Item is the final store place of the split substring
char * arg = va_arg ( arguments, char *);
//Split the strings, delimiter is space
char * splitBuffer = strsep(&string, " ");
//Allocate the buffer memory to store the splitBuffer
arg = malloc(sizeof(char*)*strlen(splitBuffer));
strcpy(arg ,splitBuffer);
printf("Buffer [%s] -- [%s]n", buffer, arg);
}
va_end ( arguments ); // Cleans up the list
free(tofree);
}
}
char * a;
char * b;
char * c;
split(buffer,3,a,b,c);
printf("Print A = %s B = %s C = %s\n", a,b,c);