C 在包含字符串的typedef结构中使用指针
我想编写一个名为“substitution”的函数,作为参数传递:C 在包含字符串的typedef结构中使用指针,c,function,pointers,linked-list,typedef,C,Function,Pointers,Linked List,Typedef,我想编写一个名为“substitution”的函数,作为参数传递: 一个链表“l”,每个节点上都有一个字符(“lchar”) 字符串“CHG” “CH”字 包含最终字符串的“vec”结构 函数每次扫描链表上的每个字符,并在“vec”上写入链表中与作为参数传递的字符CH不同的字符,但当它扫描链表上的确切CH字符时,会在“vec”上写入字符串“CHG” 以下是我的教科书给出的解决方案。我似乎理解整个程序,但当函数扫描字符CH时,我无法理解这段文字: svec->v[cur]='\0';strcat(
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;
}
这将svec->v char*上[cur]位置的字符替换为终止的空字节,以便在其上使用strcat
来自曼斯特卡特:
函数的作用是:将src字符串追加到dest字符串,覆盖终止字符串
空字节('\0'),然后添加一个终止的空字节
如果strcat的“dest char*”缺少终止空字节,则strcat行为是不可预测的。它是一种安全措施
svec->v[cur]=l->lchar;
它是这样写的,因为“svec”和“l”是指针,因此,为了访问它们的数据,您需要遵从它们
希望有帮助 谢谢大家!!非常感谢:)
svec->v[cur]=l->lchar;