C++ 字符字符串不';我不知道问题出在哪里\0“;

C++ 字符字符串不';我不知道问题出在哪里\0“;,c++,C++,我不知道是什么问题?我的代码不起作用:( #包括 #包括 使用名称空间std; bool isPalindrome(字符*word){ int len=strlen(字); 如果(len我相信“\0”是一个以null结尾的2个字符的C字符串,由一个零后跟一个零组成。请改为使用'\0',它只是一个零。请记住:对字符串使用双引号,对单个字符使用单引号。您无法将字符串分配到字符串索引位置,因此双引号不是这样工作的,但您可以分配一个字符到字符串索引位置 第二个错误:读取。使用char n[len+1];

我不知道是什么问题?我的代码不起作用:(

#包括
#包括
使用名称空间std;
bool isPalindrome(字符*word){
int len=strlen(字);
如果(len我相信
“\0”
是一个以null结尾的2个字符的C字符串,由一个零后跟一个零组成。请改为使用
'\0'
,它只是一个零。请记住:对字符串使用双引号,对单个字符使用单引号。您无法将字符串分配到字符串索引位置,因此双引号不是这样工作的,但您可以分配一个字符到字符串索引位置

第二个错误:读取。使用
char n[len+1];
创建n,而不是
char n[len-1];
,以便使n与另一个字符串的长度相同。然后,null以
n[len]='\0';
,而不是
n[len-1]终止='\0';
,因为strlen不计算字符串中的空终止符。但是我被你的代码弄糊涂了:这个n字符串的目的是什么?最后,你在写n数组时是在它的外部写的!因为你让n有size
len-1
,你需要在索引
len-2
len-1 在您的情况下,它位于数组外部!始终以小于数组大小的索引1在数组内部终止null。当编译器知道数组的一侧时,例如n的情况,请改为这样做:
n[sizeof(n)-1]='\0';

<>你不能用变量来设置C中的数组长度,在C++中,它可能需要LeN来实例化数组。< /P> 此外,请在将来发布您的确切错误信息。事实上,请编辑您的答案并立即添加,以帮助回答者和未来的读者


注意:从我的电话中回答,因此我无法进行测试,也无法像我希望的那样彻底。也许我可以稍后再讨论这个问题以改进我的答案。

简单的答案是你应该

使用“\0”而不是“\0”

因为n是一个字符数组,所以应该使用单引号而不是双引号


<希望>这将有助于

< P>字符数组的元素的赋值应该只与字符有关,但在你的情况下,你要分配给字符串。注意‘A/0’是字符串。尝试使用赋值给“/0”。< /P>这是无效的C++。<代码> char n [LeN-1] /代码>是不正确的。<代码> n[Le-1== \ \“0”;
有两个错误,一个是写过结尾,另一个是赋值字符串,而不是字符。您是否尝试过先编译此错误?这是否回答了您的问题?请更详细地解释您的问题。“我的代码不起作用”和“错误为'\0')都不能很好地解释此问题。我也是同样的问题。字符n[len-1]=“\0”和charn[len-1]我想从列表中删除第一个和最后一个字符string@JanylS你的编辑只是使你已经收到的答案无效。这对回答的人不公平,让下一个和你有相同问题的人感到困惑。请恢复编辑并为你的新问题开始一个新问题。我相信作业
n[len-2]='\0'
是一个更正,只是进行了一些猜测。在我看来,它的目的是从字符串中删除第一个和最后一个字符。如果结果是回文,则原始字符串是一个(在该
If
子句中)。更大的问题是
n
的其余部分没有初始化。(来自
word+1
的副本丢失了。)JaMiT和Gabriel,谢谢。我如何初始化n的其余部分?我想,我初始化了它。你为什么这么认为?你在哪里这么做的?你能告诉我们代码中你在数组中设置任何其他值的位置吗?再一次,“它不起作用”不是一个有效的问题描述。请花更多的时间对您的问题进行科学解释和探索。@JanylS如果您已经修复了编译时错误,那么您就进入了一个新的问题。这句话是从哪里来的?非常感谢,下一个问题是,我的主要功能是错误的。您知道e在哪里吗错误?我每次都会得到0作为输出(这在半小时前已经说过了。代码中的其他问题呢?未定义的行为。数组中应该有从索引1到len-1的单词副本。然后在你的答案中解释并展开。ähm,我如何复制它
#include <iostream>
#include <string.h>

using namespace std;

bool isPalindrome(char* word){
   int len = strlen(word);
   if(len <= 1){
       return true;
   }else
       if(word[0] == word[len-1]){
           char n[len-1];
           n[len-1]= "\0";
           return isPalindrome(n);



       }
   return false;

}

int main(){

char *a = "alla";
bool b = isPalindrome(a);
cout<<b<<endl;
return 0;}