首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用toupper()函数来计算用户输入的小写和大写?

如何使用toupper()函数来计算用户输入的小写和大写?
EN

Stack Overflow用户
提问于 2016-11-10 13:50:38
回答 3查看 267关注 0票数 1

我有一个大小为25的数组,它在数组中存储大写字母。对于我的用户输入测试,它存储'A‘、'B’、'C‘和'D’。我的程序计算数组中这些字母的数量并将其打印出来。例如,如果输入AABBCCDD,它会说有2个A,2个B,2个C和2个D。现在,我正在尝试让它也接受小写字母,并计算它们,只要它们与大写字母相同。例如,如果我输入aA、Bb、cC和dD,它仍然会打印出每个都有两个。我的代码如下:

代码语言:javascript
复制
int main(void)
{
    char array[25];

    printf("Enter array: \n");
    scanf("%[^\n]", array);
    printf(Array is: ", array);

    count(array, 'A');
    return 0;
 }
 void count(char* array, char p)
 {    
 int i, count = 0;
 for (i = 0; array[i] !='\0'; i++)
   if(array[i] == p)
     count++;
 printf("Number of %c's: %d\n, p, count);
 }

我希望代码同时计算'A‘和'a’。使用toupper()是一种方法吗?

EN

回答 3

Stack Overflow用户

发布于 2016-11-10 14:28:12

您只需将if(array[i] == p)条件块替换为

if(toupper(array[i]) == p)

如果您不确定p的大小写(p可以是小写或大写),请将其替换为

if(toupper(array[i]) == toupper(p))

票数 1
EN

Stack Overflow用户

发布于 2016-11-10 13:56:40

代码语言:javascript
复制
void count(char* array, char u) //pass only uppercase
 {    
    int i, count = 0;
    char l = tolower(u);      //get the lower
    for (i = 0; array[i] !='\0'; i++) {
        if(array[i] == u || array[i] == l)
        count++;
    }
    printf("Number of %c's: %d\n, p, count);
 }

但!对于字母表中的26个字母,您将对字符串进行26次检查。假设字符串的长度为100+个字符。

尝试创建一个只在字符串上遍历一次的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2016-11-10 14:11:47

只需将if in for循环替换为下面的代码片段,它就会解决您的问题。

if(toupper(arrayi) == p)

在这种情况下,每次comaprison都使用大写字符,并且当您传递要作为参数计数的字符时,请确保以大写形式传递

我希望它能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40520755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档