用c语言补充添加字符删除函数,能够在字符串中找到并删除指定的字符,要求函数原型为: void delete_c(char*str,
时间: 2023-08-31 17:33:59 浏览: 79
### 回答1:
charc)。
函数实现如下:
```c
void delete_c(char* str, char c) {
// 遍历字符串中的每个字符
for(int i = 0; str[i] != '\0'; i++) {
// 如果当前字符等于指定字符,则将后面的字符左移一位
if(str[i] == c) {
int j = i;
while(str[j] != '\0') {
str[j] = str[j+1];
j++;
}
// 因为左移了一位,所以需要回退一步,否则会跳过一个字符
i--;
}
}
}
```
使用示例:
```c
#include <stdio.h>
void delete_c(char* str, char c);
int main() {
char str[] = "this is a test";
printf("原字符串:%s\n", str);
delete_c(str, 't');
printf("删除t后的字符串:%s\n", str);
return 0;
}
void delete_c(char* str, char c) {
// 遍历字符串中的每个字符
for(int i = 0; str[i] != '\0'; i++) {
// 如果当前字符等于指定字符,则将后面的字符左移一位
if(str[i] == c) {
int j = i;
while(str[j] != '\0') {
str[j] = str[j+1];
j++;
}
// 因为左移了一位,所以需要回退一步,否则会跳过一个字符
i--;
}
}
}
```
### 回答2:
void delete_c(char *str, char c){
if (str == NULL || *str == '\0') {
return; // 如果字符串为空,直接返回
}
char *p1 = str; // 定义指针p1指向字符串的起始位置
char *p2 = str; // 定义指针p2指向字符串的起始位置
while (*p2 != '\0') {
if (*p2 != c) { // 如果当前字符不等于指定的字符c
*p1++ = *p2; // 将当前字符复制到p1指向的位置,并将p1指向下一个位置
}
p2++; // p2指向下一个字符
}
*p1 = '\0'; // 在最后加上字符串结束符
}
这个函数通过两个指针p1和p2遍历字符串,当p2指向的字符不等于指定的字符c时,将字符复制到p1指向的位置,并将p1指向下一个位置。最后在字符串结束的地方加上字符串结束符。这样就能实现删除字符串中指定字符的功能。
### 回答3:
void delete_c(char *str, char c) {
if (str == NULL) {
return;
}
int len = 0;
while (str[len] != '\0') {
len++;
}
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (str[i] != c) {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
}
阅读全文