功能:编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
思路:将字符的ASCII码值作为数组的下标,进行统计。
心得体会:
1、原来以为要得到字符的ASCII码值要将字符转换成十进制数,但在调试的过程中发现整数就代表一个字符,比如:98=‘d’,所以可以直接用字符作数组下标即可
2、在调试时发现strlen()函数将输入时(用fputs()输入时,会将换行符也存入字符串)的换行符 ‘\n’ 也计算在内,而遇到 ‘\0’ 时才停止计算字符串长度。
/*************************************************************************
> File Name: e14.c
> Author: LNM
> Mail: liunenming@gmail.com
> Created Time: 2018年09月01日 星期六 21时06分29秒
>function:编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
>idea:考虑使用数组下标的方式统计
************************************************************************/
#include<stdio.h>
#include<string.h>
#define MAX 1000
int main()
{
char str[1000] = {0};
char num[128] = {0};
int count = 0,len,i;
fgets(str,MAX,stdin);
len = strlen(str);
for(i = 0;i < len - 1;i ++)
{
if(str[i] >= 0 && str[i] <= 127)
num[str[i]] ++;
}
for(i = 0;i < 127;i ++)
{
if(num[i] != 0)
count ++;
}
printf("%d\n",count);
}