如何在给定索引的情况下更改字符串中字符的值? void changeChar(节点**当前){ int i; 内伦; 整数指数; char*p; char final[32]; 字符拷贝[32]; char-usr; 节点*温度; temp=(NODE*)malloc(sizeof(NODE)); strcpy(副本,(*当前)->数据); len=strlen(副本)-1; printf(“输入索引:”); scanf(“%d”和索引); 如果(指数len){ printf(“错误!\n”); } 否则{ printf(“输入字符:”); scanf(“%s”&usr); *(复制+索引)=usr;//仅当索引==0时有效?? } strcpy(临时->数据,复制); temp->next=NULL; 温度->上一个=*当前; (*当前)->next=温度; *当前=(*当前)->下一步; }

如何在给定索引的情况下更改字符串中字符的值? void changeChar(节点**当前){ int i; 内伦; 整数指数; char*p; char final[32]; 字符拷贝[32]; char-usr; 节点*温度; temp=(NODE*)malloc(sizeof(NODE)); strcpy(副本,(*当前)->数据); len=strlen(副本)-1; printf(“输入索引:”); scanf(“%d”和索引); 如果(指数len){ printf(“错误!\n”); } 否则{ printf(“输入字符:”); scanf(“%s”&usr); *(复制+索引)=usr;//仅当索引==0时有效?? } strcpy(临时->数据,复制); temp->next=NULL; 温度->上一个=*当前; (*当前)->next=温度; *当前=(*当前)->下一步; },c,string,indexing,doubly-linked-list,C,String,Indexing,Doubly Linked List,嘿,我们的任务是创建一个双链接列表,它的一个特性是,您必须能够在给定索引的情况下更改字符串的字符。关于如何完成这项工作,你有什么想法吗?你有一些问题要解决。未使用的变量i,final。malloc没有免费的。 因为您只替换一个字符,而不添加任何内容,所以不需要malloc。您的指针数学(复制+索引)可能没有按预期的大小递增,您确实希望按节点大小递增 一个更安全的替代方法是摆脱temp并执行以下操作: void changeChar(NODE **current){ int i;

嘿,我们的任务是创建一个双链接列表,它的一个特性是,您必须能够在给定索引的情况下更改字符串的字符。关于如何完成这项工作,你有什么想法吗?

你有一些问题要解决。未使用的变量i,final。malloc没有免费的。 因为您只替换一个字符,而不添加任何内容,所以不需要malloc。您的指针数学(复制+索引)可能没有按预期的大小递增,您确实希望按节点大小递增

一个更安全的替代方法是摆脱temp并执行以下操作:

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;
}
(i=0;i { *当前=(*当前)->下一步 } (*当前)->数据=usr;
您希望读取字符,而不是整个字符串,因此
scanf(“%s”,&usr)应该是
scanf(“%c”和&usr)
index>len
应该是
index>=len
for (i = 0; i < index; i++)
{
      *current = (*current)->next
}
(*current)->data = usr;