我一直在試圖解決這個問題數小時。包括研究,但沒有去。基本上,我們必須以創建功能:C指針,指針,字符
int reverseSentence(char** sentence, char ** newsentance, int maxWords){
當它返回一個句子中的單詞數。
下面是詳細信息:
你必須保持句子的資本,這意味着如果句子是資本,保持 資本。如果一個字是大寫,如名稱,保留資本
- 參數句話是一個字符數組與句子的引用, 相反,不應該由你的函數直接進行修改。句子中的每個單詞都是數組 條目。
- 參數newsentance是對字符數組的引用,用於保存新的 句子。
- 參數maxWords是字符數組的最大大小。
- 返回句子中的單詞數
- 不要將字符串複製到臨時存儲中,並將其替換爲句子中的單詞。移動 指針。
例如:「是還是不是:那就是問題。」變成「問題是:是不是或者是,要。
現在,我遇到的問題是,目前我的代碼工作。但我似乎無法想象如何在不發生錯誤的情況下利用某些資源。 (因爲我們無法創建新的存儲空間)。
我在這裏主要是我的代碼部分:
char ** fptr = sentence; //front sentence
char ** lptr = sentence; //last sentence
char ** nptr = newsentance;//front of new sentance
if(isupper(**fptr)){ //if the first letter of the first word is capital set flag
capflag = 1;
}
// find last word before null sentence and also calculate size
while(**(++lptr))
++size;
--lptr;
if(capflag){
*nptr = *lptr;
**nptr = toupper(**lptr); //error here
}
而且,我必須假設在句子的最後一個「字」是「」或者我能不能找到一種方法來計算句子的大小。我希望有人能幫助我。
我用這個來測試:
char ** test = malloc(1000);
*test = "To ";
*(test+1) = "be ";
*(test+2) = "or ";
*(test+3) = "not ";
*(test+4) = "to ";
*(test+5) = "be ";
*(test+6) = "";
char ** ztest = malloc(1000);
int rs = reverseSentence(test, ztest, 1000);
你能指定你想餵給這個函數的確切輸入嗎? –
對我來說,這似乎應該起作用 - 正如格言所示,可能會在設置語句緩衝區並調用函數的地方發佈代碼。 – Elemental
我添加了以前用於測試的代碼:@MaximSkurydin – Kalon