回文遇到segmentation fault
想在linux下: $./a.out alla asd aya然后打印 $是不是是
但是我的代码不知道哪里出现了错误
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int test_palindrome(char *str){
int i=0,j,len,n;
len=strlen(str);
j=len-1;
n=len/2;
while(i<=n){
if((*(str+i))!=(*(str+j)))
return 0;
j--;
i++;
}
return 1;
}
int main(int argc,char* argv[])
{
int palidrome;
palidrome = test_palindrome(argv);
if(palidrome==1)
printf("是",argv);
else
printf("不是",argv);
palidrome = test_palindrome(argv);
if(palidrome==1)
printf("是",argv);
else
printf("不是",argv);
palidrome = test_palindrome(argv);
if(palidrome==1)
printf("是",argv);
else
printf("不是",argv);
} 顶上去
bash 能接受没有 return 0; 的? 我加上了也是运行不了 还是显示segmentation fault 怎么办? claws0n 发表于 2018-10-6 20:04
bash 能接受没有 return 0; 的?
我加上了也是运行不了 还是显示segmentation fault 怎么办? qpwoeiruyt 发表于 2018-10-7 13:09
我加上了也是运行不了 还是显示segmentation fault 怎么办?
unix 我不会 T_T 。不过 printf() 用错了吧,试试这个#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int test_palindrome(char *str)
{
int i = 0, j, len, n;
len = strlen(str);
j = len-1;
n = len/2;
while(i < n) //不用 =,对称的,中间那个不用考虑
{
if((*(str+i)) != (*(str+j)))
return 0;
j--;
i++;
}
return 1;
}
int main(int argc, char* argv[])
{
if(test_palindrome(argv))
printf("是\n");
else
printf("不是\n");
if(test_palindrome(argv))
printf("是\n");
else
printf("不是\n");
if(test_palindrome(argv))
printf("是\n");
else
printf("不是\n");
return 0;
}
页:
[1]