[英]Why am I getting a 'Segmentation Fault' error in my code?
我有这段代码来检查 C 中的回文:
#include <stdio.h>
int main(void) {
char* test="racecar";
Palindrome(test, 7);
}
int Palindrome(char mystr[], int len){
if(len<2)
printf("Palindrome");
else if (mystr[0]==mystr[len-1]){
char* newstr;
int i=0;
int j=1;
while(j<len-1){
newstr[i]=mystr[j];
i++;
j++;
}
printf("%s", newstr);
return Palindrome(newstr, len-2);
}
else
printf("Not palindrome");
}
但我收到此错误:分段错误(核心已转储)
为什么是这样?
char *newstr
未初始化,当您引用它时会导致您的段错误。\n
终止行是个好主意。您构建代码的方式我认为您正在使用递归算法:
#include <stdio.h>
#include <string.h>
int Palindrome(char mystr[], size_t len) {
if(len < 2) {
printf("Palindrome\n");
return 1;
}
if(mystr[0] != mystr[len-1])
printf("Not palindrome\n");
return 0;
}
return Palindrome(mystr + 1, len - 2);
}
int main(void) {
char *test = "racecar";
Palindrome(test, strlen(test));
}
对应的output为:
Palindrome
这是我编写迭代版本的方式:
int Palindrome(char mystr[], int len){
for(; len > 1; mystr++, len -= 2) {
if(*mystr != mystr[len - 1]) {
printf("Not palindrome\n");
return 0;
}
}
printf("Palindrome\n");
return 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.