错误:回文中的分段错误11

时间:2016-12-11 00:50:22

标签: c

所以我一直试图通过使用函数原型来确保我可以检查用户输入的单词是否是回文。但是,我最后得到的错误是“Segment Fault:11”。我对使用函数原型相当新,所以如果有人可以帮我解决函数定义中可能发生的任何事情,那么请指出给我。

#include <stdio.h>

void palindrome_check(int ch_length, char text)

int main(void)
{
    int length;
    printf("Enter how many characters are in the message: ");
    scanf("%d", &length);

    char m;
    printf("Enter the message: ");
    scanf("%c", &text);

    palindrome_check(l, m);

    return 0;
}

void palindrome_check(int ch_length, char text)
{
    char msg[ch_length];
    text = msg[ch_length];

    int count = 0;

    while (count < ch_length)
    {
        count++;
        scanf("%c", &msg[count]);
    }

    int i, j;
    for (i = 0; i < ch_length; i++)
    {
        msg[j] = msg[ch_length - i];
    }

    if (text[i] == text[j])
    {
        printf("The message you entered is a palindrome!\n");
    }
    else
    {
        printf("It's not a palindrome.\n");
    }
}

1 个答案:

答案 0 :(得分:0)

我无法理解你的一些代码,似乎你在做一些不必要的事情。 msg的内容是什么?如果我正确理解你的问题,这应该有效:

#include <stdio.h>
#include <string.h>

void palindrome_check(int ch_length, char text []);

int main(void)
{
    char text [100];
    /*
    int length;
    printf("Enter how many characters are in the message: ");
    scanf("%d", &length);
    Not necessary if you use strlen()*/

    printf("Enter the message: ");
    fgets(text,100,stdin); /*Using fgets() to allow spaces input*/
    /*Strip the newline*/
    text [strlen(text)-1]='\0';

    palindrome_check(strlen(text),text);

    return 0;
}

void palindrome_check(int ch_length, char text [])
{
    int i;
    for (i = 0; i < ch_length; i++)
    {
      if(text [i] != text [ch_length-i-1])
      {
        printf("It's not a palindrome.\n");
        return;
      }
    }
    printf("It is a palindrome!\n");
}