這不是家庭作業,而是爲期中考察。使用指針替換C字符串中的字符
我不能使用任何類型的數組索引的諸如STR [1]或*(STR + I)
我必須採取的c字符串 「EECS280ISAWESOME」,並與C-代替 'E'字符串「XY」。我還必須考慮到「XY」變量的多個長度。
主要有以下給出:
int main() {
const char* S = "EECS280ISAWESOME";
const char* P = "XY";
char result[256];
subsituteChar(S,P,'E', result);
cout << result << endl;
}
我的解決方法看似複雜/糟糕的做法/醜。我可以更好地使用推理並添加*(R+1)
,但我不認爲它是允許的。
void subsituteChar(const char* S, const char* P, char c, char* R) {
while(*S != '\0') {
if(*S == c) {
const char* PP = P;
while (*P != '\0') {
*R = *P;
R++;
P++;
}
P = PP;
} else {
*R = *S;
R++;
}
S++;
}
}
這個工程,但我剩下XYXYCS280ISAWXYSOMXY2
。我不知道奇怪的2
來自哪裏。
你忘了NUL終止輸出緩衝區。這就是垃圾最終來自哪裏。 –
這實際上大多數都很好,但也許是在需要時複製「P」的一個小函數。你應該改變'PP'的用法,使其成爲嵌套循環中的迭代器,並避免重置'P'。 – Keith