用c++写在字符串中删除某个字符,要求使用字符数组
时间: 2024-05-08 13:14:44 浏览: 140
好的,可以帮您解决这个问题。下面是使用字符数组在字符串中删除某个字符的示例代码:
```c
#include <stdio.h>
#include <string.h>
void remove_char(char *str, char c) {
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
char c;
printf("请输入字符串: ");
scanf("%s", str);
printf("请输入要删除的字符: ");
scanf(" %c", &c);
remove_char(str, c);
printf("删除后的字符串为: %s\n", str);
return 0;
}
```
这个程序会先让用户输入一个字符串和要删除的字符,然后调用 `remove_char` 函数来删除字符串中所有出现的该字符,最后输出删除后的结果。函数的实现是,设两个指针 i 和 j,i 从左到右扫描字符串,如果碰到要删除的字符就跳过,否则将其存到 j 指向的位置,并将 j 向右移动一位,最后在 j 的位置上加上字符串结束符号。这样,就可以在原来的字符串上进行修改,而不需要额外地分配内存。
相关问题
c++数组字符串中找字符串
在C++中,可以使用字符串的find函数来在数组字符串中查找子字符串。find函数的用法如下:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::string subStr = "world";
size_t found = str.find(subStr);
if (found != std::string::npos) {
std::cout << "子字符串在数组字符串中的位置:" << found << std::endl;
} else {
std::cout << "未找到子字符串" << std::endl;
}
return 0;
}
```
在上述代码中,我们定义了一个字符串`str`和一个子字符串`subStr`,然后使用`find`函数在`str`中查找`subStr`。如果找到了子字符串,`find`函数会返回子字符串在数组字符串中的位置;如果未找到,`find`函数会返回`std::string::npos`。
用c++实现两字符串的连接,要求使用字符数组保存字符串,不要使用系统函数
在C++中,如果你想要用字符数组连接两个字符串并且避免使用系统库函数如`strcat`,你可以手写一个简单的函数来实现这个功能。这里有一个示例:
```cpp
#include <cstring> // 需要用到strlen函数获取字符串长度
// 函数用于将源串追加到目标串的末尾
void concatenateStrings(char* target, char* source) {
// 获取目标字符串的当前长度
size_t targetLength = strlen(target);
// 计算新的目标字符串长度,包括源串结束的'\0'
size_t newSize = targetLength + strlen(source) + 1;
// 检查是否有足够的空间在目标数组中添加源串
if (newSize > sizeof(target)) {
std::cerr << "Target buffer too small to hold the concatenated string." << std::endl;
return;
}
// 将源串追加到目标数组
for (size_t i = 0; i < strlen(source); ++i) {
target[targetLength + i] = source[i]; // 直接写入源串字符
}
target[newSize - 1] = '\0'; // 结束字符串,添加'\0'
}
int main() {
char target[100], source[100];
strcpy(target, "Hello "); // 设置初始目标字符串
strcpy(source, "World!"); // 设置初始源字符串
concatenateStrings(target, source); // 连接字符串
std::cout << "Concatenated String: " << target << std::endl;
return 0;
}
```
注意:这个例子假设输入的字符串长度不会超过预设的字符数组大小。如果需要处理更复杂的情况,例如动态调整目标数组大小,你可能需要使用动态内存分配。
阅读全文