【发布时间】:2017-10-25 13:31:49
【问题描述】:
如何从strtok 指针中获取字符串值并将其插入树中?
下面是输入和除法部分:
printf("\nDigite a frase: ");
fgets(frase,TAM,stdin);
val=strtok(frase," (),.-;");
while(val!=NULL){
inserir(&raiz,val);
val = strtok (NULL, " (),.-;");
}
这是树中的插入:
void inserir(no **arvore, char val[]){
no *temp = NULL;
if(!(*arvore))
{
temp = (no *)malloc(sizeof(no));
temp->esq = temp->dir = NULL;
temp->dado = val;
temp->freq=1;
*arvore = temp;
return;
}
if(val < (*arvore)->dado)
{
inserir(&(*arvore)->esq, val);
}
else if(val > (*arvore)->dado)
{
inserir(&(*arvore)->dir, val);
}
else if(val==(*arvore)->dado){
(*arvore)->freq++;
}
}
我需要插入部分来比较字符串的值,但它是在比较指针的值。
【问题讨论】:
-
相信你想用strcmp
-
您需要在插入字符串时对其进行复制。使用
strdup()perhaps,虽然它是 POSIX 而不是标准 C。 -
strdup()几乎肯定会出现。如果没有,你可以char* newStr = malloc(strlen(oldStr) + 1) ; strcpy(newStr, oldStr);
标签: c string pointers tree strtok