У меня возникла проблема при использовании strcat и reallo c, однако strcat перезаписывает целевую строку
char *splitStr(char *line) {
char *str_;
str_ = (char *) malloc(1);
char *ptr = strtok(line,"\n");
int a;
while (ptr != NULL) {
if (ptr[0] != '$') {
printf("oncesi %s\n", str_);
a = strlen(ptr) + strlen(str_) + 1;
str_ = realloc(str_, a);
strcat(str_, ptr);
str_[a] = '\0';
printf("sontasi:%s\n", str_);
}
ptr = strtok(NULL, "\n");
}
printf("splitStr %d\n", strlen(str_));
printf("%s", str_);
return str_;
}
, и мое входное значение равно;
*4
$3
200
$4
4814
$7
SUCCESS
$4
3204
, поэтому я хочу разделить это входное значение через strtok; strtok (line, '\ n');
и объединить всю строку без начального символа "$" для нового символа. Однако этот код выдает следующий вывод:
line: *4
oncesi
sontasi:*4
oncesi *4
200tasi:*4
200esi *4
4814asi:*4
4814si *4
SUCCESS:*4
SUCCESS*4
3204ESS:*4
splitStr 25
, кажется, перезаписывает исходную строку. у вас есть идея, почему эта проблема может происходить?