簡體   English   中英

字符字符串不起作用 "\\0" 有什么問題

[英]char string doesn't work what the problem with "\0"

我不知道是什么問題? 我的代碼不起作用。 :(

#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;}

錯誤是 "\\0" ,我不知道為什么。 我的主要功能也應該不對。

我相信"\\0"是一個以空字符結尾的 2 個字符的C 字符串,由一個零和一個零組成。 使用'\\0'代替,它只是一個零。 請記住:對字符串使用雙引號,對單個字符使用單引號。 您不能將字符串分配給字符串索引位置,因此雙引號不能像那樣工作,但您可以字符分配給字符串索引位置。

第二個錯誤:閱讀有關strlen()的文檔 char n[len + 1];創建 n char n[len + 1]; , 不是char n[len-1]; , 以使 n 與另一個字符串的長度相同。 然后,null 以n[len]= '\\0';終止n[len]= '\\0'; , 不是n[len - 1]= '\\0'; ,因為 strlen 不計算字符串中的空終止符。 我對你的代碼感到困惑:這個 n 字符串的目的是什么? 最后,您正在編寫 n 數組之外的內容! 由於您使 n 的大小為len - 1 ,因此您需要在索引len - 2處為 null 終止。 len - 1在你的情況下在數組之外! 在數組小於數組大小的索引 1 處始終為 null。 當編譯器知道數組的那一側時,例如 n 的情況,改為這樣做: n[sizeof(n) - 1] = '\\0'; .

順便說一下,您不能在 C 中使用變量來設置數組長度,而在 C++ 中,它可能需要 len 為 const 來實例化數組。

另外,請在將來發布您的確切錯誤消息 事實上,請編輯您的答案並立即添加,以幫助回答者和未來的讀者。

注意:通過我的手機回答,所以我無法測試或像我想要的那樣徹底。 也許我可以稍后再回到這個來改進我的答案。

簡單的答案是你應該

使用“\\0”代替“\\0”

因為 n 是一個字符數組,你應該使用單引號而不是雙引號

希望這會有所幫助

字符數組元素的分配應該只包含字符,但在您的情況下,您分配給字符串。 請注意,''/0'' 是字符串。 嘗試使用分配給“/0”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM