c语言中求字符串各类字符的统计
时间: 2023-12-29 12:05:30 浏览: 23
可以使用循环遍历字符串中的每个字符,使用一个数组来记录每个字符出现的次数。例如:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int count[128] = {0}; // 初始化数组为0,ASCII码共128个字符
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
count[(int)str[i]]++; // 统计每个字符出现的次数
}
printf("各字符出现的次数:\n");
for (int i = 0; i < 128; i++) {
if (count[i] != 0) {
printf("%c:%d\n", i, count[i]); // 输出非零元素
}
}
return 0;
}
```
该程序会先让用户输入一个字符串,然后将字符串中各个字符出现的次数统计出来并输出。注意,这里只考虑了 ASCII 码,如果需要支持 Unicode 码,则需要使用更多的空间来存储字符出现的次数。
相关问题
c语言sizeof求字符串长度
在C语言中,`sizeof`是一个用于获取数据类型或变量所占字节大小的运算符。但是,`sizeof`并不能直接用于求字符串的长度,因为字符串在C语言中是以字符数组的形式存储的,而`sizeof`运算符只能返回字符数组本身的大小,而不是字符串的实际长度。
要求字符串的长度,可以使用C标准库中的`strlen`函数。`strlen`函数的原型定义在`string.h`头文件中,它接受一个以null字符('\0')结尾的字符数组作为参数,并返回该字符串的长度(不包括null字符)。
下面是一个示例代码,演示如何使用`strlen`函数来求字符串的长度:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
int length = strlen(str);
printf("字符串的长度为:%d\n", length);
return 0;
}
```
输出结果为:
```
字符串的长度为:13
```
c语言strlen求字符串长度
在C语言中,可以使用strlen函数来求字符串的长度。但是,strlen函数只能用于求以'\0'结尾的字符串的长度。如果字符串中没有'\0',那么strlen函数会一直向后读取内存,直到遇到'\0'为止,这样可能会导致程序崩溃。因此,我们可以自己编写一个函数来求字符串的长度。常见的方法有三种:普通版、指针运算版和递归版。
1.普通版:
这种方法比较简单,就是使用一个计数器,遍历字符串中的每一个字符,直到遇到'\0'为止。代码如下:
int my_strlen(char* str) {
int count = 0;
while(*str != '\0') {
count++;
str++;
}
return count;
}
2.指针运算版:
这种方法利用指针-指针可以求得字符串的长度。我们定义一个指针start指向字符串的首地址,然后遍历字符串中的每一个字符,直到遇到'\0'为止。最后,我们用当前指针str减去起始指针start,就可以得到字符串的长度。代码如下:
int my_strlen(char* str) {
char* start = str;
while (*str != '\0') {
str++;
}
return str - start;
}
3.递归版:
这种方法使用递归的思想,每次递归调用函数时,将指针向后移动一位,直到遇到'\0'为止。代码如下:
int my_strlen(char* str) {
if (*str == '\0')
return 0;
else
return 1 + my_strlen(str + 1);
}