C言語で文字列を解析する関数を作りたいんですけど、
char同士の代入のあたりでコアダンプしてしまいます。
どうすればいいか教えていただけませんか?
$ cat whyerror.c
#include <stdio.h>
#include <stdlib.h>
int test(char ** string_ptr, char * string) {
int len = 0;
*string_ptr = (char *)malloc(sizeof(char));
while (*string) {
printf("%d: %c\n", ++len, *string++);
*string_ptr = (char *)realloc(*string_ptr, sizeof(char) * (len + 1));
**string_ptr++ = *string++; /* ??? */
}
**string_ptr = '\0';
return 0;
}
int main(void) {
char * string;
char * result;
string = "this is test!";
test(&result, string);
printf("result: %s\n", result);
return 0;
}
$ gcc whyerror.c -Wall; ./a.exe
1: t
2: i
Segmentation fault (core dumped)
>>269 スレタイ255回読み直してから出直してこい
>>270 ご、ごめんなさい。。。
ぜんぜん気付きませんでした。
逝ってきます。
>>270がいいこと逝った。
文字列の解析とかCではやりたくない罠。
std::string / boost::regex とか使えば早いかも。
>>272 でもそれ以前に、/* ??? */ の一行が間違っていそうな気が
するんですが、何がどう間違っているかが分からないんです。
ポインタの扱い方を勘違いしているのかな?
charにcharってそのまま代入してもいいんですよね?
#どこで聞けばいいのか分からない・・・。
#宿題じゃないけど宿題スレにでも行こうかな。。。