Я хочу написать функцию под названием «замена», которая передает параметры:
- связанный список «l», в котором есть символ на каждом узле («lchar»).
- строка символов "CHG"
- символ "CH"
- структура "vec", содержащая последнюю строку.
Функция сканирует каждыйвремя от времени в связанном списке и записывает в "vec" символы связанного списка, которые отличаются от символа CH, переданного в качестве параметра, но когда он сканирует точный символ CH в связанном списке, он записывает в "vec"строка" CHG ".
Ниже приводится решение, данное в моем учебнике.Кажется, я понимаю общую программу, но не могу понять отрывок, когда функция сканирует символ CH:
svec->v[cur]='\0'; strcat(svec->v,CHG);
Что именно она делает?Почему мы используем указатели для "svec"?Почему написано svec->v[cur]=l->lchar;
, поскольку мы обрабатываем строку символов?
Решение:
struct el {
struct el *next;
char lchar;
};
struct el *l=NULL;
typedef struct {
int size;
char *v;
} vec;
vec svec;
int substitution (struct el *l, char *CHG, char CH, vec *svec) {
\\ initialize svec in the dynamic memory
int cur=0;
while (l!=NULL) {
if (l->lchar !=CH) {
svec->v[cur]=l->lchar;
cur++;
l=l->next;
} else {
svec->v[cur]='\0';
strcat(svec->v,CHG);
cur=cur+strlen(CHG);
l=l->next;
}
}
svec->v[cur]='\0';
return 1;
}