#include <stdlib.h>
#include <stdio.h>

void rmchr(char *string, char a)
{
    int i, j;
    for (i = 0; string[i] != '\0'; i++) //loop till '\0' character
    {
        if (string[i] == a) { //check given character  is equal to chr at i
            for (j = i; string[j] != '\0'; j++)  // loop from i till string end
            {
                string[j] = string[j+ 1]; // swap value with next char
            }
            string[j] = '\0';  //assign terminating char to lasts index of string
            i--; //decrement i
        }

    }
}

int main()
{
    char str1[] = "abracadabra";
    char str2[] = "abracadabra";
    char str3[] = "abracadabra";
    char str4[] = "aaaa";
    char str5[] = "aaaa";
    printf("Before rmchr function call string= %s\n", str1);
    rmchr(str1, 'a');
    printf("After rmchr function call string= %s\n\n", str1);

    printf("Before rmchr function call string= %s\n", str2);
    rmchr(str2, 'b');
    printf("After rmchr function call string= %s\n\n", str2);

    printf("Before rmchr function call string= %s\n", str3);
    rmchr(str3, 'n');
    printf("After rmchr function call string= %s\n\n", str3);

    printf("Before rmchr function call string= %s\n", str4);
    rmchr(str4, 'a');
    printf("After rmchr function call string= %s\n\n", str4);

    printf("Before rmchr function call string= %s\n", str5);
    rmchr(str5, 'n');
    printf("After rmchr function call string= %s\n", str5);
}


/ *输出

rmchr函数调用字符串= abracadabra之前
rmchr函数调用字符串后= brcdbr

rmchr函数调用字符串= abracadabra之前
rmchr函数调用字符串= aracadara之后

rmchr函数调用字符串= abracadabra之前
在rmchr函数调用string = abracadabra之后

rmchr函数调用字符串= aaaa之前
rmchr函数调用字符串后=

rmchr函数调用字符串= aaaa之前
rmchr函数调用字符串后= aaaa



0.015秒后退出,返回值0
按任意键继续 。 。 。
* /

最佳答案

表达式a[i]定义为与*(a + i)等效。根据我的理解,使用该转换修改代码就足以满足指针要求。

如果要递增和递减指针变量而不是整数索引,请考虑以下几点:

char *p = string;
int i = 0;

while (string[i]) {
    assert(*p == string[i]);
    ++i;
    ++p;
}

关于c - 我将如何修改rmchr以使用指针。我已经能够按原样运行我的代码,但是分配需要使用指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45041397/

10-12 15:36