要求判断是否为回文字符串,为啥输出的都是no

#include<stdio.h>
#include<string.h>
char Palindrome(char *str);
int main()
{
char str[100],a[100];
gets(str);
Palindrome(str);
if(strcmp(str,a)==0)
printf("Yes");
else
printf("No");
return 0;
}
char Palindrome(char str)
{
int j=0,i;
char a[100];
for(i=strlen(str)-1;i>=0;i--){
(a+j)=(str+i);
j++;
}
(a+j)='\0';
}

函数没有把数组a返回啊

#include<stdio.h>
#include<string.h>
char* Palindrome(char *str);
int main() {
    char str[100];
    gets(str);
    char *a = Palindrome(str);
    if(strcmp(str, a) == 0)
        printf("Yes");
    else
        printf("No");
    return 0;
}
char* Palindrome(char str[]) {
    int j = 0, i;
    char a[100];
    for(i = strlen(str) - 1; i >= 0; i--) {
        a[j] = str[i];
        j++;
    }
    a[j] = '\0';
    return a;
}

把代码按代码块的格式放上来

img


#include <stdio.h>
#include <string.h>
void *Palindrome(char *str, char *a);
int main()
{
    char str[100], a[100];
    gets(str);
    Palindrome(str, a);
    if (strcmp(str, a) == 0)
        printf("Yes");
    else
        printf("No");
    return 0;
}
void *Palindrome(char *str, char *a)
{
    int j = 0, i;
    for (i = strlen(str) - 1; i >= 0; i--)
    {
        *(a + j) = *(str + i);
        j++;
    }
    *(a + j) = '\0';
}


#include<stdio.h>
#include<string.h>
char* Palindrome(char str[]);
int main()
{
    char str[100], *a;
    gets_s(str);
    a=Palindrome(str);
    if (strcmp(str, a) == 0)
        printf("Yes");
    else
        printf("No");
    return 0;
}
char* Palindrome(char str[])
{
    int j = 0, i;
    char a[100];
    for (i = strlen(str) - 1; i >= 0; i--) {
        a[j] = str[i];
        j++;
    }
    a[j] = '\0';
    return a;
}

img

改成这样

#include<stdio.h>
#include<string.h>
void Palindrome(char *str);
int main()
{
    char str[100],a[100];
    gets(str);
    strcpy(a,str);
    Palindrome(str);
    //puts(str);puts(a);
    if(strcmp(str,a)==0)
        printf("Yes");
    else
        printf("No");
    return 0;
}
void Palindrome(char *str)
{
    int j=0,i;
    //char a[100];
    int len=strlen(str);
    //printf("%d\n",len);
    for(i=0; i<len/2; i++)
    {
        //(str+i)=(str+(len-1-i));
        //printf("%c  %c\n",str[i],str[len-1-i]);
        char t=str[i];
        str[i]=str[len-1-i];
        str[len-1-i]=t;
    }
    //(a+j)='\0';
}

修改如下,供参考:

#include<stdio.h>
#include<string.h>
char *Palindrome(char* str); //修改
int main()
{
    char str[100], a[100];
    gets(str);
    strcpy(a, Palindrome(str));//修改
    if (strcmp(str, a) == 0)
        printf("Yes");
    else
        printf("No");
    return 0;
}
char *Palindrome(char *str)//修改
{
    int j = 0, i;
    char a[100];
    for (i = strlen(str) - 1; i >= 0; i--) {
        *(a + j) = *(str + i);
        j++;
    }
    *(a + j) = '\0';
    return a;
}