如何在给定索引的字符串中更改字符的值?

时间:2015-11-20 14:30:47

标签: c string indexing doubly-linked-list

void changeChar(NODE **current){
    int i;
    int len;
    int index;
    char *p;
    char final[32];
    char copy[32];
    char usr;
    NODE * temp;
    temp = (NODE *)malloc(sizeof(NODE));
    strcpy(copy, (*current)->data);
    len = strlen(copy)-1;
    printf("Enter index: ");
    scanf("%d", &index);
    if(index < 0){
        printf("Error!\n");
    }
    else if(index > len){
        printf("Error!\n");
    }
    else{
        printf("Enter character: ");
        scanf("%s", &usr);
        *(copy + index) = usr; //Only works if index == 0??
    }
    strcpy(temp->data, copy);
    temp->next = NULL;
    temp->prev = *current;
    (*current)->next = temp;
    *current = (*current)->next;
}

嘿,我们的任务是创建一个双向链表,其中一个功能就是你必须能够在给定索引的情况下改变字符串的字符。关于如何实现它的任何想法?

1 个答案:

答案 0 :(得分:0)

你有一些问题在继续。未使用的变量i,final。没有免费的malloc。 由于您只是替换一个角色,而不是添加任何东西,因此不需要malloc。您的指针数学(复制+索引)可能没有按您期望的大小递增,您真的希望按NODE大小递增。

更安全的选择是摆脱温度并做这样的事情:

for (i = 0; i < index; i++)
{
      *current = (*current)->next
}
(*current)->data = usr;