gpt4 book ai didi

c - 遍历数组并删除打印数组的第 i 个字符

转载 作者:行者123 更新时间:2023-11-30 21:08:12 25 4
gpt4 key购买 nike

我试图循环遍历一个单词并删除该单词的第 i 个字符,然后打印出该单词,但最终得到了 Abort Trap 6。这是我的代码....

 int main(){

int i;
char arr[] = "Tenesssee";
char temp[21];

strcpy(temp, arr);

for (i = 0; i <strlen(temp); i++){
strcpy(&temp[i], &temp[i + 1]);
printf("%s", temp);
}

return 0;
}

最佳答案

你犯了一些错误。你的问题有点含糊。其中之一将做你想做的事。第一个删除元素并更新数组,第二个仅删除元素。

void removeElemAndUpdate(char** word, int i ){
char* arr = *word;
printf("Length of word %d \n",strlen(arr));
if(i==0){
char* newarr =calloc(strlen(arr),1);
strcpy(newarr,&arr[1]);
printf("%s\n",newarr);
free(arr);
*word=newarr;
}else if(i>=strlen(arr)){
printf("%d is outside the array bounds\n",i);
}else{
char* start = calloc(strlen(arr),1);
char* end = calloc(strlen(arr)-i + 1,1);
strncpy(start,arr,i);
strcpy(end, &arr[i+1]);
strcat(start,end);
free(arr);
printf("%s\n",start);
free(end);
*word=start;
}

}

void removeElem(char* arr,int i){
if(i==0){
char* newarr =calloc(strlen(arr),1);
strcpy(newarr,&arr[1]);
printf("%s\n",newarr);
free(newarr);
}else if(i>=strlen(arr)){
printf("%d is outside the array bounds\n",i);
}else{
char* start = calloc(strlen(arr),1);
char* end = calloc(strlen(arr)-i + 1,1);
strncpy(start,arr,i);
strcpy(end, &arr[i+1]);
strcat(start,end);
printf("%s\n",start);
free(end);
free(start);
}
}

希望这有帮助

关于c - 遍历数组并删除打印数组的第 i 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39882146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com