【发布时间】:2017-11-15 10:13:20
【问题描述】:
我正在尝试编写一个函数,它将读取两个字符串 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;
}
提前致谢!
【问题讨论】:
-
问题陈述是什么?很难猜测输出如何依赖于输入。
-
调试器会告诉你段错误发生在哪里。您的问题陈述含糊不清。
stringArray似乎描述了图形的边缘,您的输出应该是 A 的路径。请将其编辑到问题中。 -
如果用strcat替换strcpy,segfault还会出现吗?
-
你将不得不解释输入应该如何给出输出。
-
忽略算法!我改变了问题,只询问发生的错误。