c - 打印大写/小写字母

标签 c

我正在编写一个程序,要求用户输入字符流并打印出大写字母和小写字母的数量。我正在尝试使用一个函数来完成它,但是在打印它时遇到了一些问题..对于我输入的每个字符输入,我都得到 0, 0 感谢您帮助我理解我做错了什么:

#include <stdio.h>
#include <ctype.h>

int case_letters(int ch);

int main(void)

{
    int x;
    printf("please enter a some characters, and ctrl + d to see result\n");

    case_letters(x);

    return 0;
}

int case_letters(int ch)

{
    int numOfUpper = 0;
    int numOfLower = 0;

    while ((ch = getchar()) != EOF)
    {
        if ((ch = isdigit(ch)) || ch == '\n')
        {
            printf("please enter a valid character\n");
            continue;
        }


        else if ((ch = isupper(ch)))
        {
            numOfUpper++;
        }

        else if ((ch = islower(ch)))
        {
            numOfLower++;
        }

    }

    return  printf("%d, %d", numOfUpper, numOfLower);
}

最佳答案

您所有的 if 语句都将不同的值分配给 ch,并且不检查 ch 的值。

例如,如果你输入了一个正确的char,这个

if ((ch = isdigit(ch)) || ch == '\n')

会将0赋给ch,因为isdigit(ch)会返回0。我猜你需要

if ( isdigit(ch) || ch == '\n')

islowerisupper 相同。

关于c - 打印大写/小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649550/

相关文章:

java - 移植C代码;需要有关按位运算和指针语法的帮助

c - 我可以使用哪些编译器选项来进行反汇编?

c - 为什么更改结构指针后会出现段错误?

python - 如何将 uint32_t 转换为无符号字符数组?

c - 匹配 2 个文件中的文本

c++ - 保护定义的 C 宏

c++ - "ANSI C"或 "ANSI C++"在今天还有意义吗?

c - 添加额外的 printf 行会影响 C 代码

c - 谁在 C 的 Socket 上连接

c - 如何在 C 中 append 到文件,在 Linux 上使用 O_APPEND 模式打开?