本题要求实现一个删除字符串中的指定字符的简单函数。 函数接口定义: void delchar( char *str, char c ); 其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
时间: 2023-08-31 14:36:17 浏览: 85
删除字符串中指定的字符
### 回答1:
好的,这是一个编程问题,可以回答。以下是代码实现:
```c
void delchar(char *str, char c) {
int len = strlen(str);
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
```
这个函数使用了双指针法,其中i指针遍历整个字符串,j指针指向修改后的字符串。当遇到不等于c的字符时,将其加入修改后的字符串中。最后,将修改后字符串的结束标志'\0'添加到字符串末尾。
如果有其他编程问题,欢迎提问。
### 回答2:
实现如下:
```cpp
void delchar(char *str, char c) {
if (str == nullptr) {
return; // 如果传入的字符串为空,则直接返回
}
int len = strlen(str); // 获取字符串的长度
// 使用两个指针,一个指向当前字符,一个指向目标位置
char *p = str;
char *q = str;
while (*p != '\0') {
if (*p != c) {
*q = *p; // 如果当前字符不是待删除的字符,将其复制到目标位置
q++; // 目标位置指针向后移动
}
p++; // 当前字符指针向后移动
}
*q = '\0'; // 将目标位置指针所在位置设为字符串结束符,即截断字符串
}
```
上述代码使用了双指针的方法来进行字符串的删除操作,思路如下:
1. 首先判断传入的字符串是否为空,如果为空则直接返回。
2. 使用两个指针p和q,分别指向当前字符和目标位置。
3. 遍历字符串str,当遇到不等于待删除字符c的字符时,将其复制到q所在的位置并将q向后移动一位。
4. 遍历结束后,将q所在位置设为字符串结束符'\0',即截断字符串。
这样,就可以实现删除字符串中指定字符的功能。
### 回答3:
实现题目要求的函数delchar如下:
```python
void delchar(char *str, char c)
{
if (str == NULL)
return; // 当传入的字符串为空时,直接返回
int i, j;
for (i = j = 0; str[i] != '\0'; i++)
{
if (str[i] != c)
{
str[j] = str[i];
j++;
}
}
str[j] = '\0';
}
```
此函数采用了双指针方法,定义了两个指针`i`和`j`,分别代表遍历字符串和删除指定字符后的字符串的指针。
首先判断传入的字符串是否为空,如果为空则直接返回。
然后遍历字符串中的每一个字符,当遇到待删除的字符时,跳过该字符;当遇到非待删除的字符时,将其复制到新的位置,并移动`j`指针。最后在新的字符串末尾添加结束符`\0`。
这样,函数执行后就可以删除字符串中所有出现的指定字符。
例如调用`delchar("hello world", 'o')`,函数执行后字符串变为`hell wrld`。
阅读全文