qpwoeiruyt 发表于 2018-10-6 15:09:20

回文遇到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);
}

qpwoeiruyt 发表于 2018-10-6 23:37:57

顶上去

claws0n 发表于 2018-10-7 03:04:35

bash 能接受没有 return 0; 的?

qpwoeiruyt 发表于 2018-10-7 12:27:39

我加上了也是运行不了 还是显示segmentation fault 怎么办?

qpwoeiruyt 发表于 2018-10-7 13:09:06

claws0n 发表于 2018-10-6 20:04
bash 能接受没有 return 0; 的?

我加上了也是运行不了 还是显示segmentation fault 怎么办?

claws0n 发表于 2018-10-7 13:21:25

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]
查看完整版本: 回文遇到segmentation fault