c - 切换字符大小写,指针问题

标签 c pointers

我的程序的目标是切换输入的两个字母的大小写。例如,a 转向 A,B 转向 b。当我知道我的逻辑是正确的时,我无法让我的代码工作。

#include <stdio.h>;

void switcharoo(char *ch1,char *ch2)
{

    if(*ch1 >= 'a' && *ch1 <= 'z' && *ch2 >= 'A' && *ch2 <= 'Z')
    {
        *ch1 = 'A' + *ch1 - 'a';
        *ch2 = 'a' + *ch2 - 'A';
    }
    else if(*ch1 >= 'A' && *ch1 <= 'Z' && *ch2 >= 'A' && *ch2 <= 'Z')
    {
        *ch1 = 'a' + *ch1 - 'A';
        *ch2 = 'a' + *ch2 - 'A';
    }
    else if(*ch1 >= 'a' && *ch1 <= 'z' && *ch2 >= 'a' && *ch2 <= 'z')
    {
        *ch1 = 'A' + *ch1 - 'a';
        *ch2 = 'A' + *ch2 - 'a';
    }
    else if(*ch1 >= 'A' && *ch1 <= 'Z' && *ch2 >= 'a' && *ch2 <= 'z')
    {
        *ch1 = 'a' + *ch1 - 'A';
        *ch2 = 'A' + *ch2 - 'a';
    }
}

int main()
{
    char lettera,letterb;

    printf("Please input a first character: ");
    scanf("%c", &lettera);
    printf("Please input a first character: ");
    scanf("%c", &letterb);

    switcharoo(lettera,letterb);
    printf("%c\n %c\n",lettera,letterb);

    return 0;
}

最佳答案

scanf("%c", &lettera);
scanf("%c", &letterb);

这可能不是您想要的。您可能在输入第一个字母后键入的换行符(输入)(假设您的提示暗示您希望它们出现在不同的行上)将作为第二个字母读入。您必须键入两个字母然后换行才能将它们读入您的 letteraletterb 成功...只需提示一次输入 2 个字符。此外,最好检查 scanf 的返回值,以确保它获得了您请求的输入....

关于c - 切换字符大小写,指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15331184/

相关文章:

c - 试图释放这个二维数组

c - MPI_Probe() 挂起

javascript - JavaScript 中指向全局变量的指针

C++ 将数组分配给彼此; type int* = type int 有效但 int = int*?

c++ - 调用指向成员函数的模板指针

c - C 中的 malloc 命令错误

c - 如何在/usr/include 中包含自定义 .h 文件

c++ - 如何从 lua_topointer 访问 lua 的对象?

c 字符串指针

c - C99 中固定大小的指针类型