0

我已经为作业编写了这个简单的程序,但是当我输入文本时,输出给我的是符号而不是字符。任何帮助,将不胜感激。我不知道为什么我的输出会这样显示,但程序似乎编译得很好。也许它正在工作,我只需要用数学做一个基本测试,看看它是否正常运行。无论如何,如果有人在这方面看到错误,我们非常感谢您提供反馈。

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

string Crypto(string, int); // rotation


int main(int argc, string argv[])
   {
    int k = 0;
    // error checing
    if (argc == 0 || argc == 1 || argc > 2)
   {
        // get mad
        printf("Enter 1 integer as an argument.  Stop messing around!\n Try Again: ");
        return 1;
   }
    else
   {
        //create command line arguments to be stored into k
        k = atoi(argv[1]);
        k = k * 1;
   }

    // Get text to be encrypted
    printf("Enter the text you want to encrypt: \n");
    string a = GetString();

    string b = Crypto(a, k);
    printf("%s\n", b);

    return 0;
 }

 //Now let's get cryptic
 string
 Crypto(string a, int k)
 {
    int c = 0;
    for (int i = 0, n = strlen(a); i < n; i++)
    {
        if(a[i] >= 65 && a[i] <= 90)
        {
            c = ((26 - (91 - a[i] + k) % 26));
            a[i] = c + 'A';
        }
        else
        {
            c = ((26 - (123 - a[i] + k % 26)));
            a[i] = c + 'a';
        }
     }
     return a;
  }
4

1 回答 1

1

在 functionCrypto中,您需要附加一个\0(null) 字符来表示字符串的结尾。就在之前return a;,写一个a[i+1] = '\0';声明。

于 2014-12-07T06:12:03.733 回答