我得到了以下任务:

编写一个将字符串作为输入并打印最长的程序
字符串的前缀,其反向是字符串的有效后缀。
例如,如果输入的是“符号”,则前缀“no”为
带有匹配的有效后缀(即“on”)的最长前缀
结束。

如果字符串是回文(即字符串与它的字符串相同)
相反),则前缀是整个字符串本身。例如,如果
输入为“civic”,则最长前缀为“civic”本身。如果
字符串没有有效的前缀,则输出0。例如,如果输入的字符串
是“鸟”,第一个字符本身不匹配
是无效的前缀。

字符串中的符号将仅来自集合{A-Z,a-z}。的
符号区分大小写。即“A”和“a”被认为是
不同。为您提供了一个名为printChars()的函数。
从指向的起始位置打印一个字符数组
p到q指向的结束位置。如果p为NULL,则输出0。

该函数的原型是:

void printChars(char *p, char *q);

您不必为printChars()函数编写程序。这个
函数会自动添加到代码段的末尾,
你写。

如果需要,可以在库中使用字符串函数。

输入:输入是一个长度为N的字符串,仅由来自
设置{A-Za,z}。

OUTPUT:最长的前缀,具有相应的匹配后缀
如果不存在这样的前缀,则为0。

约束:输入将满足以下属性。它是
无需验证输入。

1
我已经编写了代码,但是编译失败。是什么原因引起的问题,如何解决?
#include<stdio.h>
#include<string.h>
void printChars(char *p,char *q);
int main()
{
    char a[99];
    int n;
    scanf("%s",a);
    char *p=null,*q=null,*x;
    p=&a[0];
    q=&a[0];
    n=strlen(a);
    x=&a[0]+(n-1);
    for(int i=0;i<=(n-1);i++)
    {
        if(*x==*q)
        {
            x--;
            q++;
        }
        else
        {
            q--;
            break;
        }
    }
    x=&a[0]+(n-1);
    if(*p!=*x)
        printf("0");
    printchars(p,q);
    return 0;
}

void printChars(char *p, char *q)
{
    if (p==NULL){
        printf("0");
    }
    else{
        while(p <= q){
            printf("%c",*p);
            p++;
        }
    }

仍然出现错误
Program:52:1: warning: data definition has no type or storage class [enabled by default]
Program:52:1: warning: type defaults to 'int' in declaration of 'printChars' [enabled by default]
Program:52:1: warning: parameter names (without types) in function declaration [enabled by default]
Program:52:1: error: conflicting types for 'printChars'
Program:34:6: note: previous definition of 'printChars' was here
Program:54:1: error: expected identifier or '(' before 'return'
Program:56:1: error: expected identifier or '(' before '}' token
Program:59:6: error: redefinition of 'printChars'
Program:34:6: note: previous definition of 'printChars' was here

最佳答案

C中没有名为null的预定义宏。
更改

char *p=null,*q=null,*x;


char *p = NULL, *q = NULL, *x;

更改功能调用
 printchars(p,q);
      ^ This 'c' should be in capital


 printChars(p,q);

您也错过了函数}的右括号printChars
最后是您的运行代码:http://ideone.com/SczMu2

关于c - 回文检查器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22593089/

10-11 15:15