如何遍历一个字符串并检查它是否与 C 中同一字符串的当前字符匹配?

How to loop through a string and check if it matches current character of the same string in C?

我是菜鸟,请见谅...

基本上,假设密钥是 26 个字符,由字母组成,不允许重复字符。

所以我想做的是拿钥匙的第一个字母,抓住它,然后搜索钥匙的其余部分,看看是否有重复的字母。如果是这样,它应该 return 错误值为 1。

string keycopy = "JTREKYAVOGDXPSNCUIZLFBMWHQ";

for (int i = 0; i < keylength; i++)
    {
        // check if all is alphabet, check for repeated chars

        int c = keycopy[i]; //current char, save and then loop
        
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            {
                continue;
            }
            else
            {
                printf("Alphabet only please\n");
                return 1;
            }
        for (int j = i + 1; j < keylength; j++)
        {
            if (keycopy[j] == c)
            {
                printf("No repeating characters please\n");
                return 1;
            }
        }
    }

我很确定我正在获取 keycopy 的第一个字符并将其与 keycopy 的第二个字符进行比较,但我想比较 keycopy 的第一个字符并将其与 keycopy 的整个其余部分进行比较, 一次一个字符。我还没有学过指针。

第二个 for 循环是死代码,它永远不会到达,因为 continue 将跳到 for 循环的下一个迭代。

替换为

    if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
    {
        printf("Alphabet only please\n");
        return 1;
    }

我还认为将 c 声明为 char 而不是 int 是一种很好的做法,这将减少以后出现不可预见错误的风险。

char c = keycopy[i]; //current char, save and then loop

有一种更有效的方法可以在没有第二个循环的情况下测试之前是否见过一个角色,但对于这个练习,我认为你现在的代码已经足够好了