我在Ubuntu中使用GCC用ANSI C编写了一个小应用程序。在我的一个文件中,我有以下功能:

void Decipher(char *pCipherText, char *pLetter, char *pReplacement) {
    for (; *pCipherText != '\0'; pCipherText++) {
        if (*pCipherText == *pLetter) {
            SortChar(pCipherText, pReplacement);
        }
    }
}

SortChar()的函数:
void SortChar(char *pChA, char *pChB) {
    char tempCh; /*temp variable*/
    tempCh = *pChA; /*store old value before it is overwritten*/
    *pChA = *pChB; /*overwrite old value*/
    *pChB = tempCh; /*complete the swap*/
}

pCipherText是一个指向字符数组的指针,pLetter是一个指向字符的指针,pReplacement是一个指向字符的指针。我希望函数使用指针pCipherText遍历整个数组,并用pReplacement的值替换数组中每次出现的pLetter值。现在,该函数只替换pCipherText中pLetter的第一个实例。
我该如何修改功能,以取代所有发生的褶皱与前置?谢谢。

最佳答案

你应该替换

SortChar(pCipherText, pReplacement);

具有
*pCipherText = *pReplacement;

您的SortChar()将交换它的参数,我相信它的名称是错误的。

关于c - 我将如何获得一个函数来替换数组中char的所有实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22213044/

10-11 21:09