#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/