C 数组比较故障

C 数组比较故障,c,arrays,C,Arrays,我正在写一个程序,看看输入的字符串是否是回文 我使用C,而不是C++ 为此我编写了一个函数,输入的字符串被放入主函数中名为data的数组中 int palindroom(char data) { length = sizeof(data); //getting the length of the word for (i = 0; i < length; i++){ j = length-1-i; //inverting the string resstr[i] = data

我正在写一个程序,看看输入的字符串是否是回文 我使用C,而不是C++ 为此我编写了一个函数,输入的字符串被放入主函数中名为data的数组中

int palindroom(char data) {
length = sizeof(data); //getting the length of the word
for (i = 0; i < length; i++){
    j = length-1-i; //inverting the string
    resstr[i] = data[j]; //
}
if (data = resstr)
    return (1);    //returning result
else return (0); }
int回文(字符数据){
length=sizeof(data);//获取单词的长度
对于(i=0;i
我在VisualStudio中遇到c2109和E0142错误,但我并不真正理解我做错了什么。 (知道我在学校刚开始学习c可能会很好,所以我对c有点陌生)

  • 您传递的是一个字符,而不是一个单词。您需要传递字符数组才能传递单词

  • 要知道以null结尾的字符串的长度,可以使用
    strlen()
    函数

  • int palindroom(char data) {
    length = sizeof(data); //getting the length of the word
    for (i = 0; i < length; i++){
        j = length-1-i; //inverting the string
        resstr[i] = data[j]; //
    }
    if (data = resstr)
        return (1);    //returning result
    else return (0); }
    
  • 要反转字符串,可以使用
    strev
    ,但可以做更简单的事情来知道字符串是否为回文

  • data=resstr
    是一个赋值而不是比较。即使是
    ==
    ,比较也不会达到你的预期。要比较STRIMG,您需要使用
    strcmp()

您想做的事情的简单版本:-



您的代码存在一系列问题

int palindroom(char data)
在这里,数据需要一个字符,但您将指向char的指针传递给它

length = sizeof(data);
您需要的函数不是sizeof(),而是strlen()

这里,首先“=”是赋值运算符,而用于比较的运算符是“==”。但是,“==”也不适用于字符串。为此,您需要strcmp()

参考资料:

代码

int palindroom(char * data) {
    length = strlen(data); //getting the length of the word
    for (i = 0; i < length; i++){
        j = length-1-i; //inverting the string
        resstr[i] = data[j]; //
    }
    if (strcmp(resstr, data) == 0)
        return (1);    //returning result
    else return (0); 
}
int回文(字符*数据){
length=strlen(数据);//获取单词的长度
对于(i=0;i
数据
是单个
字符
,因此
数据[j]
没有任何意义。还有什么是
resstr
?另外,假设您将
data
更改为
char*
,那么
sizeof(data)
将不会返回数组的大小,
data=resstr
是一个赋值,而不是一个比较(无论如何,您不能使用
=
来比较内容
char
数组)数据是一个数组,resstr也是,忘了告诉别人this@KarsNoordhuis“数据是一个数组”不,它不是。@MartinJames我确实将它们定义为全局数组,我只是没有包括其余的代码。只有回文函数
int palindroom(char data)
length = sizeof(data);
if (data = resstr)
int palindroom(char * data) {
    length = strlen(data); //getting the length of the word
    for (i = 0; i < length; i++){
        j = length-1-i; //inverting the string
        resstr[i] = data[j]; //
    }
    if (strcmp(resstr, data) == 0)
        return (1);    //returning result
    else return (0); 
}