计算字符串中的元音、辅音、数字和其他符号
Counting vowels, consonants, numbers and other symbols in a string
我正在计算一个字符串中有多少元音/辅音/数字/其他符号。
#include <stdio.h>
#include <string.h>
int main(void)
{
int cons = 0, vow = 0, num = 0, oth = 0;
int i, length;
char str[100];
printf("Input a string with no space : ");
scanf("%s", &str);
printf("=====================================n");
length = strlen(str);
for(i = 0; i < length; i++)
{
switch(str)
{
case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': case 'A':
case 'E': case 'I': case 'O': case 'U': case 'Y':
vow++;
break;
case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'j':
case 'k': case 'l': case 'm': case 'n': case 'p': case 'q': case 'r':
case 's': case 't': case 'v': case 'w': case 'x': case 'z':
case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'J':
case 'K': case 'L': case 'M': case 'N': case 'P': case 'Q': case 'R':
case 'S': case 'T': case 'V': case 'W': case 'X': case 'Z':
cons++;
break;
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
case 9:
num++;
break;
default:
oth++;
break;
}
}
printf("%sn", str);
printf("Number of consonants: %dn", cons);
printf("Number of vowels: %dn", vow);
printf("Number of numbers: %dn", num);
printf("Number of other symbols: %dn", oth);
}
我知道我的问题缺少"开关",但我真的不知道该放什么。我应该把其他东西放在我的绳子的名字上吗?
有两种常见的访问C字符串中所有字符的方法:
-
使用索引-在您的情况下,这意味着
str[i]
-
使用指针-这样可以避免
strlen
调用
以下是第二种方法的外观:
for (char* p = str ; *p != ' ' ; p++) {
switch (*p) {
...
}
}
注意,不再需要length
和索引i
,因为当指针p
到达null终止符时,循环将终止。
还要注意,scanf("%s", &str);
是不安全的——你需要告诉scanf
你的缓冲区有多大:
int numScanned = scanf("%99s", str);
这样可以防止缓冲区溢出。注意使用99
作为100
字符缓冲区:这样做是为了为空终止符字符保留一个char
。还要注意,不应该将&
放在str
前面,因为在调用函数时,数组已经被当作指针处理了。
您应该检查numScanned
是否等于1
,以检测scanf
中可能的故障。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 计算字符串中的元音、辅音、数字和其他符号