【问题标题】:How to get the string value from a pointer如何从指针中获取字符串值
【发布时间】: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


【解决方案1】:

谢谢@gbtimmon。我将比较方法更改为:

int comp=strcmp(val, (*arvore)->dado);

if(comp<0)
{
    inserir(&(*arvore)->esq, val);
}
else if(comp>0)
{
    inserir(&(*arvore)->dir, val);
}
else if(comp==0){
    (*arvore)->freq++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2020-09-03
    • 1970-01-01
    • 2019-10-15
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多