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;
你得到了想要的输出。
我正在尝试编写一个函数,它将读取两个字符串 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;
你得到了想要的输出。