用c语言实现组自定义ch1字符个数就在数组2打印相同个数的#
时间: 2024-12-20 08:24:51 浏览: 9
在C语言中,如果你想实现将一组字符按照它们出现的次数分别打印到另一个数组中,你可以使用哈希表(如`unordered_map`或`std::map`)来记录每个字符及其出现的次数,然后遍历这个映射,将每个字符按相应次数复制到新数组。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#include <unordered_map>
void count_chars(const char* str, char result[], int max_count) {
// 创建一个无序地图来存储字符及其出现次数
std::unordered_map<char, int> char_count;
// 遍历输入字符串
for (char c : str) {
// 如果字符已经在映射中,则增加计数;否则添加到映射并设置计数为1
char_count[c]++;
}
// 清空结果数组以便后续填充
memset(result, 0, max_count);
// 遍历映射,将每个字符按计数值复制到结果数组
for (const auto& pair : char_count) {
if (pair.second > 0 && max_count > 0) {
while (pair.second--) {
result[0] = pair.first;
result++;
}
}
}
}
int main() {
const char input[] = "hello world!";
char output[50]; // 假设最多有50个字符会被打印
int char_count = sizeof(output); // 最大可能出现次数
count_chars(input, output, char_count);
printf("Character counts in the given string:\n");
for (size_t i = 0; i < strlen(output); i++) {
printf("%c appears %d times.\n", output[i], output[i+1]);
i++; // 结果数组里的每个元素对应了字符和它的计数,所以跳过计数部分
}
return 0;
}
```
阅读全文