我試圖創建一個應該做以下的功能:如果聲明未能激活
-Take兩個字符數組,一個比另一個更小,並確定小字符數組是否是一個子集的較大陣列。作爲示例: 陣列A:{"s","c","h","o","o","l"}
;陣列B:{"c","h"}
。我有義務使用指針增加/減少操作。這是我所生成的代碼:
int locator(char *Bigptr, char *Smallptr) {
int count = 0;
for (; *Bigptr != '\0'; Bigptr++) {
if (*Smallptr == *Bigptr) {
for (; (*Smallptr == *Bigptr) != '\0'; Smallptr++, Bigptr++) {}
if (*Smallptr == '\0') {
return count;
}
else {
cout << "small is not the subset of big" << endl;
return 0;
}
}
count++;
}
return 0;
這是我如何看待的代碼應該運行:
兩個指針到一個字符數組被作爲參數的函數「定位」。變量計數是我爲了告訴我A中出現的第一個字符的下標是什麼(例如,「school」和「ch」將是元素1,所以A [1])。第一個for循環確保較大數組的第一個值是一個實際的字符。 if語句在找到一個共同的字符時返回true。第二個for循環然後檢查是否所有較小的數組都存在於較大的數組中。當我的程序編譯時,所有這些都按預期工作。問題出現在嵌套的if語句中。實際上,如果更小的陣列是較大陣列的一個子集,我預計它是真實的。爲什麼不是這種情況?以「學校」和「通道」爲例。 * Smallptr最初指向數組B的第一個元素(即「ch」),所以「c」。然後將其與「學校」中的「c」進行比較。這兩個指針然後遞增,以便它們都指向它們各自陣列中的「h」。再次,它們再次遞增,以使Bigptr指向「o」,Smallptr指向「\ 0」。情況並非如此嗎?爲什麼函數總是輸出else語句?
你的參數是字符數組的數組,而不是char數組。你需要提供一個完整的例子。 – doug
當我運行它時,它返回計數,其中count == 1。我可能通過傳遞正確的數據類型來搞砸了。你和A的聲明聽起來不對。 –