c 中的 strcpy 函数出现分段错误(核心已转储)

Segmentation fault (core dumped) with the strcpy-function in c

我正在尝试编写一个函数,它将读取两个字符串 stringArray[MAX]="ABADDFDEFBFCCHCGGEHJJI"popArr[MAX]="ABCDEFGHIJ" 并生成如下输出:

A
B-F-D-A
C-F-D-A
D-A
E-G-C-F-D-A
F-D-A
G-C-F-D-A
H-C-F-D-A
I-J-H-C-F-D-A
J-H-C-F-D-A

但是我遇到了 Segmentation fault (core dumped) 错误。为什么?这是我的代码:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>

#define MAX 100

size_t strlstchar(const char *str, const char ch)
{
    char *chptr = strrchr(str, ch);
    return chptr - str;
}

int main(){ 
    // Input strings    
    char stringArray[MAX]="ABADDFDEFBFCCHCGGEHJJI";
    char popArr[MAX]="ABCDEFGHIJ";

    int index=2, lenpop, lentemp;
    char usedString[MAX]="";    
    char tempChar;

    lenpop    = strlen(popArr); 

    printf("%c\n", stringArray[0]); 

    for(int i=1;i<lenpop;i++){
        strcpy(usedString, stringArray);
        printf("%c", popArr[i]);
        tempChar = popArr[i];

        while(tempChar!=stringArray[0]){
            while(index%2==0){
                index = strlstchar(usedString, tempChar);
                lentemp = strlen(usedString);
                usedString[lentemp-index-1]=0;
                }   

            printf("-%c", usedString[index-1]);
            tempChar=usedString[index-1];   
            index=2;        
            }
            printf("\n");       
        }

    return 0;
    }

提前致谢!

这一行出现分段违规:

    usedString[lentemp - index - 1] = 0;

在这里,您试图从末尾查找索引,但您的 strlstchar returns 从头开始​​查找索引,尽管它从末尾开始搜索。当然,您希望在找到的字符处截断字符串。

将此行替换为:

    usedString[index] = 0;

你得到了想要的输出。