CS50 CAESAR PSET2通过命令行自变量argv []通过密钥加密文本的问题>

问题描述 投票:0回答:1

所以我需要编写一个程序来对文本进行加密,该文本将x(argv [1] = x)添加到提示用户的文本上。即:./program 1 //以argv [1] = 1运行程序plaintext:abcd //提示用户写他想加密的字符密文:bcde //返回以argv [1]“ key” = 1

加密的明文

这是我的代码

int main (int argc, string argv[])
{   
    if (argc != 2)
    {
        printf("Usage: ./ceasar key\n");
        return 1;
    }
    else if (argc ==2)
        {
            int k = atoi(argv[1]);
            for (int j = 0, len = strlen(argv[1]); j < len; j++)
            {
                if (!isdigit(argv[1][j]))
                {
                    printf("Usage: ./ceasar key\n");
                    return 1;
                }

            }
            for (int j = 0, len = strlen(argv[1]); j < len; j++)
            {
                 if (isdigit(argv[1][j]))
                {
                    string s = get_string("plaintext: ");
                    printf("ciphertext: ");
                    for (int i = 0, n = strlen(s); i <= n; i++)
                    {

                        if ('@' < s[i] && s[i] < '[')
                        {
                            printf("%c", (s[i] - 'A' + k) % 26 + 'A');
                        }
                        else if('`' < s[i] && s[i] < '{')
                        {
                            printf("%c", (s[i] - 'a' + k) % 26 + 'a');
                        }
                        else
                        {
                            printf("%c", s[i]);
                        }
                        printf("\n");
                        return 0;
                    }  
                }
            }
        }
    }```


The first lines checks if argc !=2, and if argv[1][j] has a non numeric character. Once that is done it will get argv[1] and add it to each character given from the user. but it wont work correctly. 

**Any sugestions?**


所以我需要编写一个程序来对文本进行加密,该文本将x(argv [1] = x)添加到提示用户的文本上。即:./program 1 //使用argv [1] = 1明文运行程序:abcd //提示用户输入...

cs50 caesar-cipher
1个回答
0
投票

我测试了您的代码。它只打印一个字符,这意味着最后的for loop返回速度太快。该循环仅迭代一次,因为它在迭代结束时返回0。如果将return 0printf("\n")一起移出for循环,则代码将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.