cs50 pset2 caesar ---验证密钥

slrpeee03

我正在经历CS50,并且卡在pset2凯撒(caesar)上。我按照说明进行了逐步操作,并且跳过了验证密钥的部分-确保命令行参数只是一个数字(./caesar 20),如果不是(./caesar 20x或./caesar xyz)以打印出用法:./ caesar键\ n。但是,一旦我添加了以下几行以提示用户输入纯文本,然后打印出密文,它似乎并没有注册验证密钥的前几行。我知道哈佛大学的学术诚信政策,因此我希望对此提供一些提示/帮助/解释。我已经在下面发布了我的代码,非常感谢您的帮助。

int main(int argc, string argv[])       
{

        int i = 0;
        if(isalpha(argv[1][i]))
        {
            printf("Usage: ./caesar key\n");
            return 1;
        }
        else
        {
            int key = atoi(argv[1]);
            string text = get_string("plaintext: ");
            printf("ciphertext: ");
            int n = strlen(text);
            for(i = 0; i < n; i++)
            {
                if(isupper(text[i]))
                {
                    printf("%c", (((text[i] - 65) + key) % 26) + 65);
                }
                else if(islower(text[i]))
                {
                    printf("%c", (((text[i] - 97) + key) % 26) + 97);
                }
                else
                {
                    printf("%c", text[i]);
                }
            }
    }
    printf("\n");
    return 0;
} 
恐龙编码器

您需要重新输入验证。

  1. 它不能确保在命令行中提供一个参数。
  2. 它仅在验证第一个字符argv[1]程序应该测试参数的每个字符都是一个数字(请参阅参考资料man isdigit)。isalpha()不是一个很好的测试。如果用户输入$怎么办?

尚不清楚程序何时无法运行,但是基于这些缺陷,这将无法通过check50。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章