作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图循环遍历一个单词并删除该单词的第 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/
我是一名优秀的程序员,十分优秀!